Nginx 代理规则摘要
最编程
2024-07-16 12:40:13
...
Nginx代理规则总结
- 说明
- 一、location
- 二、proxy_pass
- (1)proxy_pass包括ip和资源路径,结尾没有/
- (2)proxy_pass包括ip和资源路径,结尾有/
- (3)proxy_pass只包括ip,结尾有/
- (4)proxy_pass只包括ip,结尾没有/
- (5)root和alias
- 三、关于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就是代理失败或者报错,这个时候要检查两个东西
- 检查配置文件中是不是有非法的空格之类的字符,配置文件第一行的server后面不要有空格
- 字符编码问题,nginx是utf-8非bom编码的,最好是在本地先用notepad++编辑,然后利用notepad++把字符转为utf-8非bom编码,最后再上传到服务器
上一篇: Nginx:什么是代理?
下一篇: 为nginx配置二级域名的示例代码
推荐阅读
-
配置 WSGI 服务器(Gunicorn)和 Nginx 反向代理服务器以部署 Flask 项目
-
Unity WebGL 使用 nginx 作为反向代理来处理跨域和一些跨域错误处理(添加反向代理配置后仍无法跨域)。
-
使用nginx代理网页,修改页面更新后,页面内容不变。停止nginx后,发现页面仍然可以访问。
-
深入理解PCIe 5.0 - 7的交易层:第3部分 - TLP摘要和路由寻址规范 - TLP摘要规则解析
-
CentOS 7安装ipvsadm和Nginx,并进行基本配置与测试 下面是重写后的段落: 1. 关闭防火墙 2. 在浏览器中输入服务器IP地址并访问 3. 修改网页内容以区分不同的服务器 4. 配置lvs/nat,使用自定义的脚本 5. 检查ipvsadm设置的规则 6. 关闭防火墙 7. 测试LVS效果。
-
两种方法实现Nginx多层次反向代理并获取真实IP
-
如何配置LNMP和Nginx进行反向代理
-
如何处理Nginx反向代理后网页JS/CSS文件加载问题?
-
深入理解Nginx流代理模块SSL连接源代码解析 - 第三部分:详细源码剖析
-
如何用NGINX搭建HTTPS代理服务器:一种实践方法