nginx location proxy_pass的一些坑

常规博客是,先讲自己的经历,然后再啰嗦一段话,并且再穿插一些自己的感想之类的。
不, 我的博客力求最高效率。
需求: 把 URL 中带 /proxy/ 的统统转发至另外的机子。

1.【 loacation 块中存在 ~* 则proxy_pass的URL不能带 / 。】
如下,会报错

 location ~* /proxy/ {
                proxy_pass http://192.168.79.133/; # 这儿带 /
                
        }

但可以这样写

 location ^~ /proxy/ {
                proxy_pass http://192.168.79.133/;
        }

或者这样写

 location  /proxy/ {
                proxy_pass http://192.168.79.133/;
        }

而以下这种写法,需要完全的指定其地址。
($1)只匹配到它的第一匹配项,而匹配项是存在多个的, “(.)” 里需要写上非常明确的URL,下列仅作演示。

 location ~* /proxy/(.) {
                proxy_pass http://192.168.79.133/($1);
        }

2.【proxy_pass的未尾,只要含 /, 就一定是alias 拼接URL。】

 location  /proxy/ {
                proxy_pass http://192.168.79.133;
        }
 #  www.a.com/proxy/abc  -> 192.168.79.133/proxy/abc;
 location  /proxy/ {
                proxy_pass http://192.168.79.133/;
        }
 #  www.a.com/proxy/abc  -> 192.168.79.133/abc;
 location  /proxy/ {
                proxy_pass http://192.168.79.133/567;# 不管/在不在末尾,除去http://这部分的/外,只要带/ 就是拼接。
        }
 #  www.a.com/proxy/abc  -> 192.168.79.133/567abc;

下列的这个是猜测, 我本人未测试,根据上面的规律猜测的。

这个是猜测,未经测试
 location  /proxy {
                proxy_pass http://192.168.79.133/;
        }
 #  www.a.com/proxy/abc  -> 192.168.79.133//abc;
 #个人观察, 其规律是    192.168.79.133/ 拼接 /proxy/abc 中的除去 /proxy 的部分剩下的 /abc, 即 192.168.79.133/  拼接 /abc ,即成192.168.79.133//abc .   这种情况下, sudo nginx -s reload 会明确告诉你有问题。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值