Nginx location、proxy_pass 后有 / 与没 / 的区别

第一种情况:

  • 配置:
    location /static
    proxypass 192.168.2.321:81
    
  • 解释:
    • Location匹配到/static,但不包括后面的斜杠。
    • Proxypass没有斜杠结尾,所以直接将匹配到的路径附加到proxypass地址后。
  • 最终转发地址: 192.168.2.321:81/static/a.html

第二种情况:

  • 配置:
    location /static
    proxypass 192.168.2.321:81/
    
  • 解释:
    • Location匹配到/static,但不包括后面的斜杠。
    • Proxypass以斜杠结尾,表示它是一个目录,所以只会附加请求的路径部分(a.html)。
  • 最终转发地址: 192.168.2.321:81/a.html

第三种情况:

  • 配置:
    location /static/
    proxypass 192.168.2.321:81
    
  • 解释:
    • Location匹配到/static/,包括后面的斜杠。
    • Proxypass没有斜杠结尾,所以将匹配到的完整路径(包括斜杠)附加到proxypass地址后。
  • 最终转发地址: 192.168.2.321:81/static/a.html

第四种情况:

  • 配置:
    location /static/
    proxypass 192.168.2.321:81/
    
  • 解释:
    • Location匹配到/static/,包括后面的斜杠。
    • Proxypass以斜杠结尾,表示它是一个目录,所以只会附加请求的路径部分(a.html)。
  • 最终转发地址: 192.168.2.321:81/a.html
    更清晰、更易于理解的表达:
    概念定义:
  • Location路径(Path1): Nginx配置中location后面指定的路径。
  • 请求路径(Path2): 客户端请求的URL中location路径之后的部分。
    转发规则:
  1. 如果Proxypass以斜杠(/)结尾:
    • Nginx认为Proxypass指定的是一个目录。
    • 转发时,丢弃Location路径(Path1),只保留请求路径(Path2)。
    • 结果格式: Proxypass地址 + Path2
  2. 如果Proxypass不以斜杠(/)结尾:
    • Nginx认为Proxypass指定的是一个完整的路径或文件。
    • 转发时,将Location路径(Path1)和请求路径(Path2)都附加到Proxypass地址后。
    • 结果格式: Proxypass地址 + Path1 + Path2
      示例:
  • 对于请求 192.168.1.123:80/static/a.html
    • Path1(Location路径): /static/static/(取决于配置)
    • Path2(请求路径): a.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值