nginx proxy_pass 路径拼接的具体实现

 更新时间:2026年05月21日 09:22:23   作者:冰糖拌面  
本文主要介绍了nginx proxy_pass 路径拼接的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

主要是记录proxy_pass在做转发时,转发的url生成规则,本文以通用字符串匹配为例,就是类似如下

location /aaa {
    proxy_pass ...
}

正则及精准匹配放到下篇说

正文

对于访问后端路径的拼接,proxy_pass可以分为两种,一种是携带URI(或者说是某个uri的一部分),一种是不带uri(或者说仅有协议 + host)

例如 http://localhost:80 就是不带uri的地址

例如 http://localhost:80/ 和 http://localhost:80/aaa 就是携带URI的地址

以下案例全部是假设 nginx设置server 为example.com,即

http {
    server {
        listen 8080;
        server_name example.com; 
    }
}

不带uri

这种比较好说,访问nginx的URI直接拼接到proxy_pass的后面就可以了,举例如下

location /aaa {
    proxy_pass http://localhost
}
location /aaa/ {
    proxy_pass http://localhost
}

1、对于上面两种写法,访问nginx的URL为 http://example.com:8080/aaa/xxx,nginx转发的地址将是 http://localhost/aaa/xxx

2、但是对于http://example.com:8080/aaa就会有所不同,如果只有location /aaa/ , 那么http://example.com:8080/aaa会被重定向为http://example.com:8080/aaa/

带uri

这种就是,将原URL的URI匹配到的location后面的内容去掉,再拼接到proxy_pass后,常见案例如下

第一种

location /aaa {
    proxy_pass http://localhost/
}

访问 http://example.com:8080/aaa/xxx ,nginx将转发到 http://localhost//xxx 

解析就是 /aaa/xxx 去掉 /aaa 剩下了 /xxx,拼接到http://localhost/ 后面 成了 http://localhost//xxx

这种写法不对,多了一个/,但是我用来测试的nginx1.25.1没有问题,依然转发到正确的 http://localhost/xxx,但是不建议搞这种特立独行的

第二种

location /aaa/ {
    proxy_pass http://localhost/
}

 访问 http://example.com:8080/aaa/xxx ,nginx将转发到 http://localhost/xxx 

解析就是 /aaa/xxx 去掉 /aaa/ 剩下了 xxx,拼接到http://localhost/ 后面 成了 http://localhost/xxx

第三种

location /aaa/ {
    proxy_pass http://localhost/ccc
}

 访问 http://example.com:8080/aaa/xxx ,nginx将转发到 http://localhost/cccxxx

解析就是 /aaa/xxx 去掉 /aaa/ 剩下了 xxx,拼接到http://localhost/ccc 后面 成了 http://localhost/cccxxx

这一眼看过去就是个错误

第四种

location /aaa {
    proxy_pass http://localhost/ccc
}

 访问 http://example.com:8080/aaa/xxx ,nginx将转发到 http://localhost/ccc/xxx

解析就是 /aaa/xxx 去掉 /aaa 剩下了 /xxx,拼接到http://localhost/ccc 后面 成了 http://localhost/ccc/xxx

第五种

location /aaa/ {
    proxy_pass http://localhost/ccc/
}

 访问 http://example.com:8080/aaa/xxx ,nginx将转发到 http://localhost/ccc/xxx

解析就是 /aaa/xxx 去掉 /aaa/ 剩下了 xxx,拼接到http://localhost/ccc/ 后面 成了 http://localhost/ccc/xxx 

第六种

location /aaa {
    proxy_pass http://localhost/ccc/
}

 访问 http://example.com:8080/aaa/xxx ,nginx将转发到 http://localhost/ccc//xxx

解析就是 /aaa/xxx 去掉 /aaa 剩下了 /xxx,拼接到http://localhost/ccc/ 后面 成了 http://localhost/ccc//xxx 

这种也是非正常的拼接,但是大多数浏览器、中间件都能支持,不建议这么做

总结

1、proxy_pass后面不带uri的话,原URL的URI直接拼接proxy_pass就得出访问的后端地址

2、对于带uri的proxy_pass,将原URL的URI匹配到的location后面的内容去掉,再拼接到proxy_pass后

3、建议location 和 proxy_pass的结尾要么都带 / ,要么都不带/,否则会出现案例1、3、6的情况

到此这篇关于nginx proxy_pass 路径拼接的具体实现的文章就介绍到这了,更多相关nginx proxy_pass 路径拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Nginx中Server和Location的匹配逻辑

    深入理解Nginx中Server和Location的匹配逻辑

    这篇文章主要介绍了深入理解Nginx中Server和Location的匹配逻辑,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • 配置Nginx实现访问本地静态资源的完整指南

    配置Nginx实现访问本地静态资源的完整指南

    Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于静态资源的托管和负载均衡,在开发和生产环境中,我们常常需要使用 Nginx 来提供本地静态资源的访问,本文将详细介绍如何配置 Nginx 以便访问本地静态资源,需要的朋友可以参考下
    2024-08-08
  • Nginx分布式部署流程分析

    Nginx分布式部署流程分析

    文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事务的挑战,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • 详解ngx_cache_purge _proxy_cache指令使用

    详解ngx_cache_purge _proxy_cache指令使用

    本文主要介绍了详解ngx_cache_purge _proxy_cache指令使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 一文带你搞懂Nginx如何处理请求

    一文带你搞懂Nginx如何处理请求

    Nginx(Engine X)是一个高性能的HTTP和反向代理服务器,本文将从原理、代码以及示例来深入分析 Nginx如何处理请求,希望对大家有所帮助
    2024-11-11
  • Nginx中的location路径映射问题

    Nginx中的location路径映射问题

    这篇文章主要介绍了Nginx中的location路径映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • angular6+springboot实现前后分离nginx配置

    angular6+springboot实现前后分离nginx配置

    这篇文章主要介绍了angular6+springboot实现前后分离nginx配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Nginx 域名转发的实现

    Nginx 域名转发的实现

    这篇文章主要介绍了Nginx 域名转发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Nginx的优化、安全与防盗链实例详解

    Nginx的优化、安全与防盗链实例详解

    防止盗链不仅能保护版权,又节约了不少流量,下面这篇文章主要给大家介绍了关于Nginx优化、安全与防盗链的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • NGINX中浏览器的盗链与防止被盗的实现

    NGINX中浏览器的盗链与防止被盗的实现

    本文介绍在局域网内实现盗链与防盗链的配置方法,通过Nginx设置valid_referers限制资源访问来源,非法引用返回403禁止访问,感兴趣的可以了解一下
    2025-07-07

最新评论