我在myservice.mycompany.local
我们正在代理这样的请求
server {
listen 80;
location /myservice/ {
proxy_pass http://myservice.mycompany.local/;
}
}
一切正常,public.mycompany.com/myservice/api/1/ping
上的正常请求被正确转换为http://myservice.mycompany.local/api/1/ping
的请求,因为有/
但现在如果我们尝试使用变量
server {
listen 80;
set $MY_SERVICE "myservice.mycompany.local";
location /acm/ {
proxy_pass http://$MY_SERVICE/;
}
}
本地服务只会收到/
的请求,而URI部分会丢失
我已经能够用几个版本的nginx重现这个“问题”
我也可以通过简单的nc -l 127.0.0.2 8080
替换代理服务并将其用作我变量的值来在本地重现它,所以它似乎真的发生在nginx内部
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
中未涵盖此行为答案 0 :(得分:0)
您可能发现了未记录的功能,但始终可以使用proxy_pass
代替server {
listen 80;
set $MY_SERVICE "myservice.mycompany.local";
location /acm {
rewrite ^/acm(/.*)$ $1 break;
proxy_pass http://$MY_SERVICE;
}
}
别名:
<script> ... </script>