我们有一个专用网络,其中,我们的应用程序安装在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的Extranet部分,因此它无处可寻...我得到的是
http://zimbra.externaldomain.com/home
代替
http://zimbra.externaldomain.com/extranet/home
有帮助或线索吗?
答案 0 :(得分:0)
当心斜杠proxy_pass http://extranet.domain.com/;
,它是有效的URI。
因此,nginx将以此替换您的匹配请求。
如果您匹配的位置是/extranet/
,并且使用URI传递,例如/extranet/someurl
,则在您使用{{1}的情况下,nginx代理传递将用其自己的URI替换匹配的位置}。
因此,路由/
将变为/extranet/someurl
。