【问题标题】:NGINX reverse proxy with Rewrites to replace TMG2010NGINX 反向代理与 Rewrites 以替换 TMG2010
【发布时间】: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


【解决方案1】:

所以你想将/test/foo 映射到http://10.0.0.2/app/foo。最简单的解决方案是:

location /test/ {
  proxy_set_header    Host    $host;
  proxy_pass  http://10.0.0.2/app/; 
}

根据the documentation/test/ 元素将在通过上游时被/app/ 替换。

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多