反向代理背后的Symfony

时间:2018-10-10 06:17:20

标签: php apache symfony nginx extranet

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

http://extranet.domain.comhttp://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

有帮助或线索吗?

1 个答案:

答案 0 :(得分:0)

当心斜杠proxy_pass http://extranet.domain.com/;,它是有效的URI。 因此,nginx将以此替换您的匹配请求。

如果您匹配的位置是/extranet/,并且使用URI传递,例如/extranet/someurl,则在您使用{{1}的情况下,nginx代理传递将用其自己的URI替换匹配的位置}。

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

For reference