Nginx快速入门

176 阅读4分钟

nginx 配置文件

检查nginx配置文件是否正确

nginx -t

首先是event模块

这个模块是告诉Nginx如何处理连接的

修改nginx配置文件以后,要重新载入配置文件

nginx -s reload

htpp模块

用户发起http请求处理的模块

http里面可以有server模块

root指定根目录 默认是去找index.html

也可以自己指定自定义的页面 需要使用 index egg.html

include代表引入,这个要在server{}的外面

include /etc/nginx/mime.types 这个代表引入不同类型

image.png

image.png

location

image.png

这个代表访问localhost的时候就会访问 root里面的目录

现在我们想访问localhost/app依旧是我们以前的页面

image.png

访问结果是报错404,因为nginx去/var/www/localhost下面没有找到app的目录,如果加上app的目录,就不会报错

找不到导致的报错404

location指定不止要匹配url还要匹配对应路径的文件

但是

如果我们访问localhost/app/或者在url后面加上index.html,那么就能访问这是为啥??

当你配置一个带前缀的location块,例如location /app {,Nginx将只匹配以/app开头的exact URLs。然而,当你请求localhost/app时,Nginx找不到exact匹配,因此它将尝试在文档根目录下找到名为app的目录。如果不存在,将返回404错误。

另一方面,当你请求localhost/app/时,Nginx看到尾部斜杠,并将其视为目录请求。在这种情况下,它将匹配location /app {块,并处理该请求。

location 参数 /app

location = /app/index.html {} 这个代表访问的时候一定要访问 app/index.html才能响应,其他的访问都没有响应,访问的路径和文件要保持一致

正则表达

假设现在我的路径下面有1-10个视频,但是我只想公布6-9

image.png

我们就可以写 local ~ /videos/video[6-9].avi {}

这样表示 6789可以访问

但是有的时候他是有大小写的区别,

比如有的是video1.avi有的是Video.avi

这个时候我们需要修改成

local ~* /videos/video[6-9].avi {}

这样不区分大小写匹配,但是用户访问,还是要与实际文件路径一致,如果用户请求的uri是大写的,实际文件名是小写的,这是不行的

  • nignx只是帮你涵盖所有不区分大小写的文件路径,并不是把请求url和文件路径不区分大小写进行匹配

并不是和请求url匹配噢

也就是说, ~*加上以后,你请求的url大小写和文件名要一致,如果用户请求的是大写的,实际是小写的,那么就会报错

nignx只是帮你涵盖所有不区分大小写的文件路径

不是把用户请求url和文件路径不区分大小写进行匹配

匹配优先级

image.png

重定向

image.png

image.png

这里就是重定向

这里改变了url地址,用户是可以察觉到的,此时我们可以修改成rewrite

rewrite

修改成rewrite /temp /app/index.html

此时我们访问结果就是200,和直接访问没啥区别

注意

只是针对单个文件

当我们有多个文件,采用 try_files

try_files uriuri uri/ =404

这个意思就是先试一下用户访问的路径文件,如果没有,再看看有没有对应的文件夹,有的话就访问里面的index

image.png

反向代理

假设现在两个项目,一个在3000端口,一个在3001端口

image.png

这里用到了proxy_pass进行反向代理

这里的意思是访问指定的路径会去指定端口的项目

负载均衡

需要设置 upstream{}模块,这个要在http模块的里面,并且在serve的外面

upsteam bback{
    server  lcoalhost:3000;
     server  lcoalhost:3001;
}
给上游服务器设置名称 bback
server{
    listen 8001;
    server_name 127.0.0.1;
    root /vat;
    index index.html
   
     location / {
                proxy_pass http://bback;  这里告诉ngixn把流量导到指定服务器集群,再通过负载均衡进行分配
        }
    
}

这里weight越大,被分配到的次数就越多

upsteam bback{
    server  lcoalhost:3000  weight=2;
     server  lcoalhost:3001  weight=6;
}
给上游服务器设置名称 bback
server{
    listen 8001;
    server_name 127.0.0.1;
    root /vat;
    index index.html
   
     location / {
                proxy_pass http://bback;  这里告诉ngixn把流量导到指定服务器集群,再通过负载均衡进行分配
        }
    
}

nginx里面的/区别

nginx服务器地址及端口:127.0.0.1:80
后端服务地址及端口:127.0.0.1:8080
测试URL:http://127.0.0.1:80/api/upload

nginx配置:

location /api/ {
    proxy_pass http://127.0.0.1:8080/;
}

实际访问:http://127.0.0.1:8080/upload

nginx配置:

location /api {
    proxy_pass http://127.0.0.1:8080/;
}

实际访问:http://127.0.0.1:8080//upload

nginx配置:

location /api/ {
    proxy_pass http://127.0.0.1:8080;
}

实际访问:http://127.0.0.1:8080/api/upload

nginx配置:

location /api {
    proxy_pass http://127.0.0.1:8080;
}

实际访问:http://127.0.0.1:8080/api/upload

nginx配置:

location /api/ {
    proxy_pass http://127.0.0.1:8080/server/;
}

实际访问:http://127.0.0.1:8080/server/upload

nginx配置:

location /api {
    proxy_pass http://127.0.0.1:8080/server/;
}

实际访问:http://127.0.0.1:8080/server//upload

nginx配置:

location /api/ {
    proxy_pass http://127.0.0.1:8080/server;
}

实际访问:http://127.0.0.1:8080/serverupload

nginx配置:

location /api {
    proxy_pass http://127.0.0.1:8080/server;
}

实际访问:http://127.0.0.1:8080/server/upload