1

我们有一个专用网络,我们的应用程序安装在 Apache 虚拟主机上,例如:

http://extranet.domain.com或者http://calendar.domain.com

一切正常。现在我们需要让这些应用程序之一从我们的网络外部可用。

我们唯一具有公共访问权限的机器是 zimbra(邮件)服务器...我尝试在其中配置反向代理但它不起作用...我将此添加到/etc/nginx/sites-enabled/default

location /extranet/ {
   proxy_pass http://extranet.domain.com/;
   proxy_http_version 1.1;
   proxy_set_header Accept-Encoding "";
   proxy_set_header   X-Real-IP $remote_addr;
   proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}

如果我尝试来自外部网络的外部 URL,如下所示:

http://zimbra.externaldomain.com/extranet/login

我可以到达登录页面并登录,但在重定向后它会丢失 URL 的外联网部分,所以它无处可去......我得到的地方是

http://zimbra.externaldomain.com/home

代替

http://zimbra.externaldomain.com/extranet/home

任何帮助或线索?

4

1 回答 1

0

注意尾部的斜杠:proxy_pass http://extranet.domain.com/;,它是一个有效的 URI。所以 nginx 会用这个替换你匹配的请求。

如果您的匹配位置是/extranet/,并且您使用 URI 传递它,那么/extranet/someurl在您的情况下,nginx 代理传递将用它自己的 URI 替换匹配的位置/

因此,路线/extranet/someurl将变为/someurl

以供参考

于 2018-10-10T07:53:13.133 回答