飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一:Nginx介绍:

1.1:介绍:

Nginx(发音同 engine x)是一款基于异步框架的轻量级/高性能的Web 服务器/反向代理服务器/缓存服务器/电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·赛索耶夫)所开发,最初供俄国大型网站Rambler.ru及搜寻引擎Rambler使用。

1.2、特点

  • 优点
特点描述
高并发量基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应
内存消耗少善于处理静态文件,相较于其他web(比如:apache),占用更少的内存及资源
简单稳定配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定
模块化程度高功能模块插件化设计,可以自由配置相应的功能
低成本Nginx的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均衡器成本相当低
  • 缺点
特点描述
动态处理差nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺

二:Nginx部署:

2.1:软件安装:

# 使用命令安装
apt install nginx -y

检查nginx运行端口:

python@ubuntu:~$ sudo netstat -tnulp  | grep nginx
[sudo] python 的密码: 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1620/nginx -g daemo
tcp6       0      0 :::80                   :::*                    LISTEN      1620/nginx -g daemo

Nginx启动,关闭,重启:

python@ubuntu:~$ sudo systemctl start nginx
python@ubuntu:~$ sudo systemctl stop nginx
python@ubuntu:~$ sudo systemctl restart nginx

Nginx服务的操作指令:
查看Nginx版本:

nginx -V :版本详细信息
nginx -v : 版本

使用配置文件启动:

sudo nginx -c /etc/engix/engix.config

退出

sudo nginx -s stop

重启:

sudo nginx -s reload

2.2: 默认配置信息:

  • nginx软件默认目录
目录描述
工作目录/etc/nginx
执行文件/usr/sbin/nginx
日志目录/var/log/nginx
web目录/var/www/html/,首页文件是index.nginx-debian.html /usr/share/nginx/html/ 首页文件是index.html
  • nginx默认配置文件
文件目录描述
默认文件/etc/nginx/nginx.conf
其他目录/etc/nginx/{sites-available/sites-enabled/conf.d}

在这里插入图片描述

  • 文件结构
配置段描述信息
全局配置段nginx的基础配置属性
http配置段nginx的web服务基础配置属性
server配置段项目或者应用配置属性
location配置段url配置属性

2.3: Nginx访问原理:
主配置文件中指定从配置文件。/etc/nginx/nginx.config
在这里插入图片描述
在从配置项配置:前端传过来的路径会和root拼接,这样找到服务器中的绝对路径。
在这里插入图片描述
$uri :指的是前端传过来的路径
$uri/ : 指的是如果找不到就路径后面再加一个/,然后找这个文件夹中的index.html文件。
=404: 指的是如果都找不到就报404错误。

三:配置信息:

3.1:Server配置:
3.1.1:配置样式:

server {
    listen 端口;
    server_name 主机名;
    ...
}

3.1.2:listen属性:

# 1:精确样式
listen 192.168.203.153:8000
# 2:只写ip则默认是80端口
listen 192.168.203.153
# 3: 所有ip都可以
listen 0.0.0.1:8000
# 4: 只写端口默认ip都可以
listen 8000
# 5: 默认地址---下面两个相同
listen default_server 
listen 127.0.0.1:80

3.1.2:server_name属性:
作用:当A主机只有一个开发的端口80,但是却存在多个网站,我们可以通过Server_name指定的域名,进行匹配后的下一步操作。

sever_name www.meiduo.site

3.1.3: root 属性:
作用:定义Server相应请求的html文件所在路径。

root /var/www/html;

3.1.4:index属性:
作用:定义响应请求后返回的文件名称或格式。

index index.html index.htm index.nginx-debian.html;

3.2:Location配置:

location 匹配规则 匹配的字符 {规则}

location / {
        root   /var/www/html;                    # 指定响应请求的文件所在路径
        index  index.php index.html index.htm;    # 指定响应请求的默认文件名称
        try_files $uri $uri/ =404;                # 如果root指定的路径下有查找的文件,就返回,否则报错
}

3.2.1:匹配规则:

  • 正则匹配
类型含义匹配方式优先级样式
~ 或 !~普通正则-敏感 或 不敏感正则符号3location ~ .(jpe?g)$ {}
~*或 !~普通正则-不敏感 或 敏感正则符号3location ~* .(jpe?g)$ {}
  • 普通匹配
类型含义匹配方式优先级样式
=/路径精确匹配前缀1location = /image {}
^~优先匹配前缀2location ^~ /page {}
@内部重定向前缀location @name {}
空 /通用匹配前缀4location / {}
  • 匹配示例

常见示例:

location = / {            location ~ \.(gif|jpg|png|js|css)$ {   location !~* \.xhtml$ {
   #精确规则A                  #正则规则D                                #正则规则G
}                         }                                      }
location = /login {       location ~* \.png$ {                   location / {
   #精确规则B                   #正则规则E                              #通用规则H
}                         }                                      }
location ^~ /static/ {    location !~ \.xhtml$ {
   #优先规则C                   #正则规则F
}                         }

访问效果如下:

访问根目录/, 比如http://a.com/ 将匹配规则A

访问 http://a.com/login 将匹配规则B

访问 http://a.com/static/a.html 将匹配规则C

访问 http://a.com/a.gif, http://a.com/b.png 规则D和E均适合,按顺序优先使用规则D

访问 http://a.com/static/c.png 则优先匹配到规则C

访问 http://a.com/a.PNG 则匹配规则E,因为规则E不区分大小写。

访问 http://a.com/a.XHTML 使用规则F。

访问 http://a.com/category/id/1111 则最终匹配到规则H。

3.2.2:location的匹配规则:

  • (1)、多个location匹配字符都能匹配成功的情况下,选择优先级最高的location规则去处理!
  • (2)、多个locaiton匹配字符都能匹配成功,且他们的优先级一样的情况下,选择先定义的location规则去处理!

3.2.3:root 和 alias的区别:

root 表示 location 匹配内容的相对路径

alias 表示 一个绝对路径,而且必须以"/"结尾

root标志的绝对路径,不要"/"结尾

规律:

  • (1)、alias指定目录的时候,是把alias目录剩余未匹配路径拼接,得出静态文件绝对路径;
  • (2)、root指定目录的时候,是把root目录完整的请求路径拼接,得出静态文件绝对路径;
效果一:                                    效果二:
location /img/ {                               location /img/ {
    alias /var/www/image/;                        root /var/www/image;
}                                              }

效果一:访问http://localhost/img/,nginx找/var/www/image/目录下的文件

效果二:访问http://localhost/img/,nginx找/var/www/image/img/目录下的文件

注意:

一般情况下,在location /中配置root,在location /other中配置alias

配置的目录必须有nginx的访问权限,否则全部失效,不要设置为X用户的家目录。

posted on 2020-10-07 22:03  飞行的猪哼哼  阅读(72)  评论(0)    收藏  举报