【发布时间】:2016-02-26 09:15:32
【问题描述】:
我目前有一台 Forefront TMG2010 对多个内部 Web 服务器进行反向代理。因为在 TMG 中它真的很容易,所以我做了很多主机和虚拟目录映射/重写。
现在我可以在 NGINX 中实现同样的目标。
例如,
apphost.domain.com/ 需要在内部映射到 server1/apppath/
apphost.domain.com/test/ 需要在内部映射到 server2/apppath/
apphost.domain.com/dev/ 需要在内部映射到 server3/apppath/
在每种情况下,内部 /apppath/ 都需要对客户端不可见。这是为了实现与 TMG 中外部到内部的路径映射相同。
到目前为止我所做的是;
server {
listen 80;
server_name host.server.com;
location /test/ {
proxy_set_header Host $host;
rewrite ^(.*)$ /app/$1 break;
proxy_pass http://10.0.0.2;
}
location / {
proxy_set_header Host $host;
rewrite ^(.*)$ /app/$1 break;
proxy_pass http://10.0.0.1;
}
但似乎只有 / 有效,/test/ 无效。
救命!
【问题讨论】:
-
你想让
/test/映射到http://10.0.0.2/app//test/吗?你还有一个额外的/。您还可以将 URI 附加到proxy_pass,而不是使用rewrite ... break。见:nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass -
不,我想在内部删除 /test。
-
不,我想在内部删除 /test,但它需要在外部保持显示。
标签: nginx rewrite reverse-proxy