proxy_pass使用内置变量报错
发布网友
发布时间:2023-01-02 18:23
我来回答
共1个回答
热心网友
时间:2023-10-09 21:14
前两天有同学提到个问题:有一个域名 a.fangle.com 下uri携带指定参数的路由转发到 b.fangle.com 这个域名的app模块下。请求要达到的效果大概是这样的:
nginx 配置大概如下:
but 一直502 ,于是我就过来玩了一把。
我们找到error_log
这是因为proxypass使用了nginx变量,会自动做域名反向解析。
解决方法:
重启发现报了一个新错
开启本机的dns服务后:
当然你可能会说,我能不能不要resolve。我看你就是想为难我胖虎。
其实也是可以的,proxy_pass 如果不指定uri的时候,nginx会自动带上当前的uri
但是这个地址reqest_uri不是我们想要的,so我们还是要重写以下uri才能使用
放弃这种想法
nginx内置变量不允许修改
待测试
如果允许域名发生变化,也可以考虑使用return or rewirte
return 是nginx最简单的转发方式
效果:
效果同return
rewrite 和 return 没有本质上的区别,当然这种情况常用return,因为语义更清晰。rewirte 常用于url重写,就是server内部跳转,效率更高