proxy_pass使用内置变量报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了proxy_pass使用内置变量报错相关的知识,希望对你有一定的参考价值。

参考技术A 前两天有同学提到个问题:有一个域名 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内部跳转,效率更高

以上是关于proxy_pass使用内置变量报错的主要内容,如果未能解决你的问题,请参考以下文章

40-Jenkins-环境变量的使用

Postman内置的动态变量

Jmeter之Bean shell使用-常用内置变量

shader的内置矩阵和一些变量

使用内置系统变量创建 Powershell 环境变量

自定义nginx访问日志和内置变量使用