一: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 部署vue js 500_Nginx

  • 文件结构

配置段

描述信息

全局配置段

nginx的基础配置属性

http配置段

nginx的web服务基础配置属性

server配置段

项目或者应用配置属性

location配置段

url配置属性

2.3: Nginx访问原理:

主配置文件中指定从配置文件。/etc/nginx/nginx.config

nginx 部署vue js 500_Nginx_02


在从配置项配置:前端传过来的路径会和root拼接,这样找到服务器中的绝对路径。

nginx 部署vue js 500_nginx_03


$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:匹配规则:

  • 正则匹配

类型

含义

匹配方式

优先级

样式

~ 或 !~

普通正则-敏感 或 不敏感

正则符号

3

location ~ .(jpe?g)$ {}

~*或 !~

普通正则-不敏感 或 敏感

正则符号

3

location ~* .(jpe?g)$ {}

  • 普通匹配

类型

含义

匹配方式

优先级

样式

=/路径

精确匹配

前缀

1

location = /image {}

^~

优先匹配

前缀

2

location ^~ /page {}

@

内部重定向

前缀

location @name {}

空 /

通用匹配

前缀

4

location / {}

  • 匹配示例

常见示例:

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;
}                                              }


注意:

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

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