【发布时间】:2022-01-25 17:50:50
【问题描述】:
您好,我想在 nginx 中设置动态代理通道。 $myvar 将采用 ops/dev/qa 等值。但是当我使用 nginx -t 验证上述 nginx 配置文件时,我得到“proxy_set_header”指令在此处是不允许的。希望您能帮我找出这段代码的问题。
location ~^/reporting-(?<myvar>[a-zA-Z]+) {
if ($myvar = "ops") {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://xx.xx.xx.xx:8080/reporting;
}
if ($myvar = "dev") {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://xx.xx.xx.xx:8083/reporting;
}
}
嗨,谢谢蒂莫。我确信这个解决方案基本上是正确的。但我仍在为 url 重写而苦苦挣扎。为了测试这一点,我应用了下面的代码。
location /reporting-ops {
proxy_set_header Host $host;
rewrite ^/reporting-ops/(.*) /reporting/$1 break;
proxy_pass http://192.168.1.25:8931/reporting/$1; #option 1
# proxy_pass http://192.168.1.25:8931/$1; # option 2
}
但是当我这样做时,我的浏览器 URL 会更改为 /reporting,如下所示。我认为浏览器 url 不应该改变 & 重写应该在请求到达 nginx 时发生。
【问题讨论】:
标签: nginx dynamic nginx-reverse-proxy nginx-config nginx-location