Nginx代理规则总结

说明

更新时间:2022/6/17 18:22

本文记录Nginx代理常见的几种规则,例如location,proxy_pass

本文仅为记录学习轨迹,如有侵权,联系删除

一、location

符号说明
location = /uri= 开头表示精确匹配,只有完全匹配上才能生效
location ^~ /uri^~ 开头对 URL 路径进行前缀匹配,并且在正则之前
location ~ pattern~ 开头表示区分大小写的正则匹配
location /uri不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则
location /通用匹配,任何未匹配到其它 location 的请求都会匹配到,相当于 switch 中的 default

匹配的顺序如下,优先级由高到低

= 表示精确匹配
 
^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格,即所见即所得)。
 
~ 正则匹配(区分大小写)
 
~* 正则匹配(不区分大小写)
 
!~ 和 !~*  分别为区分大小写不匹配及不区分大小写不匹配 的正则
 
/ 任何请求都会匹配

首先匹配 =,其次匹配 ^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

这里简单举例说明一下匹配规则的优先级
在这里插入图片描述

二、proxy_pass

经过实际,大概可以分为以下4种情况

(1)proxy_pass包括ip和资源路径,结尾没有/

location /api {
	proxy_pass    http://127.0.0.1:8081/file/upload;
}

访问:http://127.0.0.1/api 
代理:http://127.0.0.1:8081/file/upload

注:第一和第二种其实可以归为一类,都是只要匹配到/api ,就直接跳转proxy_pass的url

(2)proxy_pass包括ip和资源路径,结尾有/

location /api {
	proxy_pass    http://127.0.0.1:8081/file/upload/;
}

访问:http://127.0.0.1/api
代理:http://127.0.0.1:8081/file/upload/

注:第一和第二种其实可以归为一类,都是只要匹配到/api ,就直接跳转proxy_pass的url

(3)proxy_pass只包括ip,结尾有/

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

访问:http://127.0.0.1/api/user/datail
代理:http://127.0.0.1:8081/user/datail

注:这种匹配到api之后,会自动在代理的ip,即proxy_pass指定的ip上面加上api后面的值

(4)proxy_pass只包括ip,结尾没有/

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

访问:http://127.0.0.1/api/user/datail
代理:http://127.0.0.1:8081/api/user/datail

注:这种匹配到之后会自动在代理的ip,即proxy_pass指定的ip上面加上location的值,再加上api后面的值

(5)root和alias

1、root 指定文件根文件夹对应的/URL 路径
2、alias 指令就是将 URL 重新映射到根位置以外的其他目录
例如配置:
在这里插入图片描述
目录结构如下
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、关于nginx配置文件的字符编码

有些时候我们正常在nginx配置文件上面写配置,明明配置语法没有错,但是ngnix就是代理失败或者报错,这个时候要检查两个东西

  1. 检查配置文件中是不是有非法的空格之类的字符,配置文件第一行的server后面不要有空格
  2. 字符编码问题,nginx是utf-8非bom编码的,最好是在本地先用notepad++编辑,然后利用notepad++把字符转为utf-8非bom编码,最后再上传到服务器 在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值