详解nginx 中location和 proxy_pass的匹配规则

 更新时间:2025年04月08日 14:08:03   作者:仁义礼智信的  
location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如 proxy_pass)会应用在匹配的请求上,这篇文章主要介绍了nginxlocation和proxy_pass的匹配规则,需要的朋友可以参考下

我来详细解释 location 和 proxy_pass 的作用以及它们在你的例子中的含义。

location 的作用

location 是 Nginx 中用来匹配客户端请求 URI 的指令,决定如何处理特定路径的请求。它定义了请求的路由规则,后续的配置(如 proxy_pass)会应用在匹配的请求上。

语法

location [修饰符] 匹配模式 {
    # 配置块
}
  • 修饰符:可选,比如 =(精确匹配)、~(正则匹配)等。
  • 匹配模式:可以是具体路径、正则表达式等。

示例:location /test

location /test {
    proxy_pass http://abc.com;
}
  • 含义
    • 当客户端请求的 URI 以 /test 开头时,这个 location 块会被匹配。
    • 比如请求 http://yourdomain.com/test 或 http://yourdomain.com/test/abc 都会进入这个块。
  • URI 处理
    • 默认情况下,Nginx 会把请求的完整 URI(包括 /test 部分)传递给后端,除非 proxy_pass 有特殊配置。

proxy_pass 的作用

proxy_pass 指定将请求代理到的后端服务器地址(可以是域名、IP 或上游服务器组)。它定义了请求的目标。

语法

proxy_pass 协议://目标地址;

示例:proxy_pass http://abc.com/tt

location /test {
    proxy_pass http://abc.com/tt;
}
  • 含义
    • 将匹配 location /test 的请求转发到 http://abc.com/tt
    • 后端服务器会收到转发的请求,具体 URI 取决于配置细节。

结合 location /test 和 proxy_pass http://abc.com/tt

让我解释这俩组合起来的效果:

默认行为(带路径替换)

location /test {
    proxy_pass http://abc.com/tt;
}
  • 客户端请求http://yourdomain.com/test/abc
  • 转发到后端http://abc.com/tt/abc
  • 解释
    • location /test 匹配请求的 /test 前缀。
    • Nginx 会把 /test 后面的部分(/abc)保留下来。
    • proxy_pass http://abc.com/tt 指定目标地址为 http://abc.com/tt,并把剩余路径(/abc)追加到后面。
    • 最终后端收到的是 http://abc.com/tt/abc

加斜杠的效果(不替换路径)

如果在 proxy_pass 后加斜杠:

location /test {
    proxy_pass http://abc.com/tt/;
}
  • 客户端请求http://yourdomain.com/test/abc
  • 转发到后端http://abc.com/tt/abc
  • 解释
    • 加了斜杠 / 后,Nginx 不会把 location 的 /test 部分替换掉,而是直接把请求的剩余路径(/abc)追加到 http://abc.com/tt/ 后面。
    • 结果和上面一样,但逻辑更明确。

不带具体路径

location /test {
    proxy_pass http://abc.com;
}
  • 客户端请求http://yourdomain.com/test/abc
  • 转发到后端http://abc.com/test/abc
  • 解释
    • 因为 proxy_pass 没有指定具体路径(只有域名),Nginx 会把客户端的完整 URI(/test/abc)直接传递给后端。

常见配置模式

  • 精确匹配路径
location = /test {
    proxy_pass http://abc.com/tt;
}
  • 只匹配 http://yourdomain.com/test,不会匹配 /test/abc
  • 转发到 http://abc.com/tt(不带额外路径)。
  • 去掉前缀
location /test/ {
    proxy_pass http://abc.com/;
}
  • 请求 http://yourdomain.com/test/abc 转发到 http://abc.com/abc
  • /test/ 被去掉,只保留后面的部分。
  • 正则匹配
location ~ ^/test/(.*)$ {
    proxy_pass http://abc.com/tt/$1;
}
  • 请求 http://yourdomain.com/test/abc 转发到 http://abc.com/tt/abc
  • 使用正则捕获组 $1 动态传递路径。

总结

  • location /test:匹配以 /test 开头的请求。
  • proxy_pass http://abc.com/tt:将请求转发到 abc.com/tt,默认保留 /test 后的路径并追加到 /tt 后。
  • 关键点:是否加斜杠(/)、是否用正则,会影响路径的传递方式。

到此这篇关于nginx `location` 和 `proxy_pass`的匹配规则的文章就介绍到这了,更多相关nginx  location  和 proxy_pass匹配规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx上部署react项目的实例方法

    nginx上部署react项目的实例方法

    今天小编就为大家分享一篇关于nginx上部署react项目的实例方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 利用nginx搭建静态资源服务器的方法步骤

    利用nginx搭建静态资源服务器的方法步骤

    这篇文章主要介绍了利用nginx搭建静态资源服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Nginx代理MySQL实现通过域名连接数据库的详细教程

    Nginx代理MySQL实现通过域名连接数据库的详细教程

    我们的生产环境基本上都部署在云服务器上,例如应用服务器、MySQL服务器等,如果MySQL服务器直接暴露在公网,就会存在很大的风险,为了保证数据安全,MySQL服务器的端口是不对外开放的,所以本文介绍了Nginx代理MySQL实现通过域名连接数据库的详细教程
    2024-07-07
  • Nginx+SSL实现双向认证的示例代码

    Nginx+SSL实现双向认证的示例代码

    这篇文章主要介绍了Nginx+SSL实现双向认证的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Nginx搭建RTMP流媒体服务器的实现

    Nginx搭建RTMP流媒体服务器的实现

    本文主要介绍了Nginx搭建RTMP流媒体服务器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 封80端口应对策略 Nginx反向代理For WIN2003超级傻瓜式配置

    封80端口应对策略 Nginx反向代理For WIN2003超级傻瓜式配置

    封80应对策略,Nginx反向代理ForWIN2003超级傻瓜式配置!
    2010-03-03
  • Nginx平滑升级的详细操作方法

    Nginx平滑升级的详细操作方法

    这篇文章主要介绍了Nginx平滑升级的详细操作方法,适应编译安装ningx的情况,yum安装的直接用yum更新即可,需要的朋友可以参考下
    2014-03-03
  • Nginx 虚拟主机配置的三种方式(基于域名)

    Nginx 虚拟主机配置的三种方式(基于域名)

    Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。本文主要介绍了基于域名的实现,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • centos7 docker 修改Nginx文件过程详解

    centos7 docker 修改Nginx文件过程详解

    这篇文章主要介绍了centos7 docker 修改Nginx文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 前端开发用得着的nginx配置(场景)

    前端开发用得着的nginx配置(场景)

    这篇文章主要介绍了前端开发用得着的nginx配置,前端的工作过程里,本地开发、提供测试环境,总得有个用着顺手的服务器软件,这个场景里nginx很流行,特分享下需要的朋友可以参考下
    2014-09-09

最新评论