LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

Nginx 的路径拼接规则

admin
2026年5月8日 11:21 本文热度 50
在前面一篇文章中,我介绍了 Nginx 的 location 匹配规则(Nginx location 匹配逻辑,看这篇就够了),今天这篇文章会介绍匹配成功后请求路径的拼接规则,下一篇文章则会介绍重定向规则。

和 location 匹配一样,Nginx 的路径拼接也是杂乱且隐晦,本文只会介绍最常见最简单的方式。

基础路径拼接规则

  • proxy_pass 的目标地址,如果不是斜杠/结尾,则代理到目标服务器,会把请求的 url 拼接到 proxy_pass 目标地址之后。
  • 如果 proxy_pass 目标地址以/结尾,则表示把请求的 url 中 location 匹配成功的部分剪切掉之后,再拼接到 proxy_pass 目标地址之后(够隐晦吧)。

比如请求 /a/b.html
location /a {  proxy_pass http://server/path;}
location /a/ {  proxy_pass http://server/path/;}
如上两个匹配成功后,实际代理的目标 url 分别是:

  • http://server/path/a/b.html

    (把 /a/b.html 拼接到 http://server/path 之后)

  • http://server/path/b.html

    (由于 proxy_pass 以/结尾,所以把 /a/b.html 的 /a/ 去掉之后,拼接到http://server/path/ 之后)

正则表达式的拼接

  • 对于 location 为正则表达式的匹配,proxy_pass 如果不带路径,结果就和普通 location 一样拼接,如下配置,请求会直接拼接到域名之后。

location ~ /abc(.*) {  proxy_pass http://127.0.0.1;}

  • 对于 location 为正则表达式的匹配,proxy_pass 能通过末尾的/来实现路径替换吗?答案是否定的。比如,如下配置会报错:

location ~ /abc(.*) {  proxy_pass http://127.0.0.1/;}
为什么不能带路径?我个人认为就是 Nginx 做得不够好!

  • 如果是正则表达式,想要实现 proxy_pass 的路径替换,Nginx 的要求是通过正则表达式的()来捕获分组,可以使用如下方式:

location ~ /abc(.*) {  #注意,此时location内部不能包含if语句,否则proxy_pass不会生效  proxy_pass http://127.0.0.1/x$1;}
如上可以把(.*)所匹配的内容拼接到 http://127.0.0.1/x 之后,关于$1的使用,可以参考各种编程语言的正则表达式。

  • 另一种方法是拼接内部变量,比如 $request_uri:

location ~ /abc { #这里也可以是普通匹配  proxy_pass http://127.0.0.1/x$request_uri;}
这种情况下,Nginx 认为可以找到准确的代理目标地址,实际效果是 http://127.0.0.1/x 后拼接完整请求路径 + 参数。


作者简介:从事 Web 前后端开发多年。一直相信“技术应该被说人话”,坚持输出实用易懂的干货内容。闲暇写些随笔,记录行业观察与生活感悟。


阅读原文:https://mp.weixin.qq.com/s/trhih4j8ZcjvKNAfZEUg9A


该文章在 2026/5/8 11:21:13 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-1  粤公网安备44030602007207号