反向代理配置:location 后面的规则带斜杆和不带斜杆的区别
1.在nginx中配置proxy_pass代理转发时:
如果在proxy_pass后面的url加/,表示绝对根路径;
如果没有/,表示相对路径,把匹配的路径部分也给代理走。
在 Nginx 的反向代理配置中,location后面的规则带斜杆和不带斜杆是有区别的。如果 location 后面的规则不带斜杆,如 location /api,那么只有完全匹配 /api 的请求才会被转发到指定的代理服务器。如果location后面的规则带斜杆,如 location /api/,那么以 /api 开头的所有请求都会被转发到指定的代理服务器。
举个例子,如果 location /api 转发到 http://backend/api,那么以下请求将被转发:
http://example.com/api
http://example.com/api/123
http://example.com/api/hello
但是以下请求不会被转发:
http://example.com/api123
http://example.com/apixyz
如果 location /api/ 转发到 http://backend/api/,那么以下请求将被转发:
http://example.com/api
http://example.com/api/123
http://example.com/api/hello
http://example.com/api/xyz
总之,需要根据实际情况选择是否在 location 后面的规则带斜杆,以确保请求能够正确地转发到指定的代理服务器。
反向代理配置:proxy_pass URL后面加斜杆和不加斜杆的区别
在Nginx反向代理中,URL后面加斜杆和不加斜杆是有区别的。如果URL后面不加斜杆,Nginx会认为这是一个文件或目录,会根据所配置的代理规则进行转发。
例如,如果请求的URL为 http://example.com/myapp,而代理规则为 proxy_pass http://127.0.0.1:8080/myapp;,则Nginx会将请求转发到 http://127.0.0.1:8080/myapp。
如果URL后面加斜杆,Nginx会认为这是一个目录,会将请求转发到该目录下的默认页面或索引文件。例如,如果请求的URL为 http://example.com/myapp/,而代理规则为 proxy_pass http://127.0.0.1:8080/myapp/;,则Nginx会将请求转发到 http://127.0.0.1:8080/myapp/index.html 或 http://127.0.0.1:8080/myapp/index.php 等默认页面。
因此,在配置Nginx反向代理时,需要根据实际情况选择是否在URL后面加斜杆,以确保请求能够正确地转发到目标服务器。当在后面的url加上了/,相当于是绝对根路径,则 nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。
location与proxy_pass结合实现反向代理的四种问题
问题描述
问题1:location后面规则带斜杆,proxy_pass URL后面也带斜杆
问题2:location后面规则不带斜杆,proxy_pass URL后面带斜杆
问题3:location后面规则带斜杆,proxy_pass URL后面不带斜杆
问题4:location后面规则不带斜杆,proxy_pass URL后面不带斜杆
上面四种情况下的转发请求的效果是啥?
问题剖析
问题1:后面规则带斜杆,proxy_pass URL后面也带斜杆
这种情况下,请求的URL中如果有斜杆,那么斜杆将被保留,请求将被转发到以 /proxy_pass_url/ 开头的URL。
# 例如,如果配置如下:
location /api/ {
proxy_pass http://backend/api/;
}
那么以下请求将被转发:
http://example.com/api/ -> http://backend/api/
http://example.com/api/users -> http://backend/api/users
http://example.com/api/users/123 -> http://backend/api/users/123
问题2:location后面规则不带斜杆,proxy_pass URL后面带斜杆
这种情况下,请求的URL中如果没有斜杆,那么斜杆将被添加,请求将被转发到以 /proxy_pass_url/ 结尾的URL。
# 例如,如果配置如下:
location /api {
proxy_pass http://backend/api/;
}
那么以下请求将被转发:
http://example.com/api -> http://backend/api/
http://example.com/api/users -> http://backend/api/users/
http://example.com/api/users/123 -> http://backend/api/users/123/
问题3:location后面规则带斜杆,proxy_pass URL后面不带斜杆
这种情况下,请求的URL中如果有斜杆,那么斜杆将被保留,请求将被转发到以 /proxy_pass_url 结尾的URL。
# 例如,如果配置如下:
location /api/ {
proxy_pass http://backend/api;
}
那么以下请求将被转发:
http://example.com/api/ -> http://backend/api
http://example.com/api/users -> http://backend/api/users
http://example.com/api/users/123 -> http://backend/api/users/123
问题4:location后面规则不带斜杆,proxy_pass URL后面不带斜杆
这种情况下,请求的URL中如果没有斜杆,那么斜杆将被添加,请求将被转发到以 /proxy_pass_url 结尾的URL。
# 例如,如果配置如下:
location /api {
proxy_pass http://backend/api;
}
那么以下请求将被转发:
http://example.com/api -> http://backend/api
http://example.com/api/users -> http://backend/api/users
http://example.com/api/users/123 -> http://backend/api/users/123
问题总结
通过上述四种情况的说明,我们可以得出以下结论:
当location后面规则和proxy_pass URL后面都带斜杆时,如果请求的URL中也带有斜杆,Nginx会将请求转发到proxy_pass指定的URL;如果请求的URL中没有斜杆,Nginx会自动加上一个斜杆后再进行转发。
当location后面规则不带斜杆,但proxy_pass URL后面带斜杆时,如果请求的URL中带有斜杆,Nginx会将请求转发到proxy_pass指定的URL;如果请求的URL中不带斜杆,Nginx会自动加上一个斜杆后再进行转发。
当location后面规则带斜杆,但proxy_pass URL后面不带斜杆时,如果请求的URL中也带有斜杆,Nginx会将请求转发到proxy_pass指定的URL;如果请求的URL中没有斜杆,Nginx会自动去掉location后面规则中的斜杆后再进行转发。
当location后面规则和proxy_pass URL后面都不带斜杆时,如果请求的URL中也不带斜杆,Nginx会将请求转发到proxy_pass指定的URL;如果请求的URL中带有斜杆,Nginx会自动去掉proxy_pass URL后面的斜杆后再进行转发。
这些区别可能看起来微小,但它们对于URL的匹配和转发却有很大的影响,因此在Nginx的配置中要特别注意。
2. location配置
语法规则
location [=|~|~*|^~|!~|!~*] /uri/ { … }
模式含义
location = /uri= 表示精确匹配
location ^~ /uri^ 进行前缀匹配,~ 表示区分大小写
location ~ pattern~ 区分大小写的匹配
location ~* pattern~* 不区分大小写的匹配
location /uri不带任何修饰符,也表示前缀匹配,但是在正则匹配之后
location /通用匹配,任何未匹配到其它 location 的请求都会匹配到,相当于 switch 中的 default
location !~区分大小写不匹配
location !~*不区分大小写不匹配
匹配优先级
首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中顺序的正则匹配
然后匹配不带任何修饰的前缀匹配
最后是交给 / 通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求
3、关系,区别及用法:
Nginx 中有两个模块都有proxy_pass指令。
ngx_http_proxy_module 的 proxy_pass:
语法: proxy_pass URL;场景: location, if in location, limit_except说明: 设置后端代理服务器的协议(protocol)和地址(address),以及location中可以匹配的一个可选的URI。协议可以是"http"或"https"。地址可以是一个域名或ip地址和端口,或者一个 unix-domain socket 路径。 详见官方文档: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_passURI的匹配,本文第四部分重点讨论。
ngx_stream_proxy_module 的 proxy_pass:
语法: proxy_pass address;场景: server说明: 设置后端代理服务器的地址。这个地址(address)可以是一个域名或ip地址和端口,或者一个 unix-domain socket路径。 详见官方文档: http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_pass
反向代理配置:location 后面的规则带斜杆和不带斜杆的区别相关推荐
- linux nginx反向代理配置
linux nginx反向代理配置 location ^~/api/ {proxy_pass http://192.168.1.50:82/; }
- Nginx配置location及rewrite规则
Nginx配置location及rewrite规则 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location ...
- nginx location 匹配 多个规则_nginx配置location与rewrite规则教程
nginx配置location与rewrite规则教程 location 教程 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ...
- Nginx安装/负载均衡/反向代理配置与调优
[Nginx安装] Linux下直接使用包管理安装 sudo apt-get install nginx 使用whereis命令查看安装位置 whereis nginx #sbin下代表nginx可执 ...
- nginx反向代理模块配置详解_nginx反向代理配置详解
反向代理配置 修改部署目录下conf子目录的nginx.conf文件(如/opt/nginx/conf/nginx.conf)内容,可调整相关配置. 将默认配置里面带#号注释内容去掉 grep -v ...
- ci框架 反向代理配置_docker-compose配置Nginx反向代理禅道
本次项目会用到3个镜像分别是nginx.mysql 和禅道,以后若迁移服务器环境则只需下载这3个镜像即可 mysql与禅道镜像下载与构建参考:mysql 禅道 目录介绍 cloud # 文件名 + ...
- isam 驱动程序 下载_将ISAM反向代理配置为与OpenID连接提供程序的PEP
isam 驱动程序 下载 注意:截至2017年5月9日,"执行测试流程"部分(在"步骤2.将反向代理配置为OpenID Connect的联系点"部分中)下的代码 ...
- 正向代理和Nginx反向代理配置介绍
正向代理和Nginx反向代理配置介绍 * Author QiuRiMangCao 秋日芒草* 正向代理(代理对象是pc) 是一个位于客户端(pc)和原始服务器(google.com)之间的服务器 场景 ...
- Nginx http和反向代理配置实例介绍
Nginx 是一个高性能的 HTTP 和反向代理服务器,本节以实际实例介绍如何实现Nginx 反向代理. 1. 安装Nginx 安装Nginx之前,首先安装相关模块的依赖库: 这里安装Pcre和O ...
最新文章
- 从脸部识别到火星机器人,正在改变世界的计算机视觉
- HDOJ(HDU) 2502 月之数(进制)
- 袜子商店应用:一个云原生参照应用
- java学习之路之播放一首简单的音乐
- Linux shell 脚本中, $@ 和$# 分别是什么意思?
- 家族关系查询系统程序设计算法思路_七大查找算法(附C语言代码实现)
- Spark入门阶段一之扫盲笔记
- 理解Attention机制原理及模型
- NYOJ题目96 n-1位数
- 电脑音量图标不见了,该如何找回?
- 信贷违约风险评估模型(下篇):机器学习模型
- 《深入理解Java虚拟机》读书总结
- mysql hibernate 乱码_mysql hibernate 乱码
- 【数学模拟卷总结】2022李林四套卷数学二第一套
- win10修改用户名/指纹无法置入/用户文件没有重命名的选项
- 京东物流IPO:商流、物流、资金流,“三流”难归一
- 羞羞的和成人机器人恋爱,或许这是“寂寞经济”催生的新风口
- 大数据命令,一文在手,全部都有(送纯净版文档)
- MATLAB 用拉格朗日插值验证龙格现象
- wsappx导致系统崩溃
热门文章
- Hash的简介与hashlib模块的使用、模拟撞库与密码加盐
- 第十一章 文件操作_C语言fscanf和fprintf函数的用法详解(格式化读写文件)
- pc前端js调起电脑本地应用程序(需要客户端配合 自定义URL Protocol 协议 )
- 淘宝客如何通过闲鱼引流?淘宝客的推广方法有哪些?
- AdaBoost 算法解析
- 输入过压保护电路OVP原理和仿真
- Maven | filtering,filter和profile标签使用
- win10开机一直转圈圈进不去系统怎么办
- 你必须知道的家庭急救常识
- Python安装Pillow时出现The headers or library files could not be found for zlib/jpeg错误