【问题标题】:Symfony behind reverse proxy反向代理背后的 Symfony
【发布时间】:2019-03-14 23:37:00
【问题描述】:

我们有一个专用网络,我们的应用程序安装在 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 的外联网部分,所以它无处可去……我得到的地方是

http://zimbra.externaldomain.com/home

代替

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

任何帮助或线索?

【问题讨论】:

  • 登录表单指向哪个路由?
  • extranet.domain.com/login 是原始登录表单
  • 我的意思是,在登录之后。表单是指向 /extranet/home 还是 /home?表单动作应该与 proxy_pass 位置匹配,而不是自动传递
  • yap...它指向/home 一切都基于extranet.domain.com 并且所有路由都与它相关...我尝试为所有路由添加“extranet”前缀,但它不起作用......如果可以的话,我不想改变当前的路线......很多人都有一些他们最喜欢的路线......

标签: php apache symfony nginx extranet


【解决方案1】:

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

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

所以,/extranet/someurl 的路由将变为 /someurl

For reference

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2021-04-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多