Nginx location(路径替换)

Nginx location 配置 后路径映射问题 (路径替换)(路径替换)

页面访问路径:

其中ip1和port1 为nginx的IP和端口,ip2和port2为代理后端服务的IP和端口

http://ip1:port1/x1/x2/search/search_tips?text=

想要实现,在nginx中如果匹配到x1/x2后;

将真实的访问导向到ip2:port2的search/search_tips这个服务

http://ip2:port2/search/search_tips?text=

所以上述的请求,采用第二种情况可实现。

所以需要在nginx中配置

需要了解proxy_pass这个参数的使用方式

第一种情况是:简单粗暴,URL直接拿过来就用。

1. 一般情况下:proxy_pass为目标地址,默认是不带 / 的; 表示只代理域名,url和参数部分不会变(nginx的做法是直接将原始的请求path直接拼接到代理服务的地址后,就是将nginx的ip和端口替换为具体服务的IP和端口,直接作为代理服务的URL)

第二种情况是:简单加工,path中剔除匹配到location的部分。

2. 另一种情况,在proxy_pass后加了 / ; 这样nginx的处理逻辑是剔除path中包含location的部分(nginx的做法是,是把path和location中匹配成功的部分裁剪调后,将新的URL拼接到proxy_pass目标地址后面)

例子:第二种情况

原始访问路径:   http://ip1:port1/x1/x2/search/search_tips?text=

server {
        location ^~/x1/x2/ {
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass "http://ip2:port2/";       # port2 后面加 / 和 不加 / 处理逻辑完全不一样。注意
        proxy_redirect http://$host/ http://$http_host/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   }

 }

经过nginx上述配置后 访问路径:http://ip2:port2/search/search_tips?text=

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值