我需要nginx-1.6.2
在多名称虚拟主机中用作反向代理,其中实际的host
-name(由客户端报告)成为代理 URL 的一部分。
基本上我想做一个映射
http://example.com/test/foo/bar
->http://backend.local:8000/example.com/portal/foo/bar
http://test.example.com/test/ping/pong
->http://backend.local:8000/test.example.com/portal/ping/pong
我尝试在指令中使用${http_host}
and :${host}
proxy_pass
server {
server_name example.com *.example.com;
listen 80;
location /test {
proxy_pass http://backend.local:8000/${host}/portal/
}
}
502: Bad Gateway
但是,当我访问例如时,要么给我一个错误。http://example.com/test/fnurz
如果我替换${host}
为固定字符串(例如example.com
),它会按预期工作,但显然代理母鸡为http://example.com/test/fnurz
和获取相同的 URL http://x.example.com/test/fnurz
,这是我试图避免的。
所以在仔细检查了调试日志后,结果发现 nginx 无法解析
backend.local
主机名。添加一行:
解决了这个问题。
但是,我不清楚为什么 nginx在没有任何变量的情况下成功解析 a
proxy_pass
时失败的原因。