在rails(使用5.2.3)中,代码redirect_to events_path
将发送带有新URL的302答复。该URL包含一个主机名,该主机名似乎是从请求的X-forwarded-host
标头中提取的。
这似乎不正确,在这种情况下不起作用。在Rails中如何以及在哪里修改(或配置)此特定行为?
详细信息:
带有puma服务器的Rails应用程序在http://server1.private.internal:5959/
的Intranet中运行。它与Apache(2.4)对话。 Apache在www.example.org
上运行并与外界对话。 apache进行反向代理,因此该应用程序可以以https://www.example.org/myapp
的身份访问。
除redirect_to
失败外,此方法有效。我对此进行了分析,然后发生了以下情况:
X-Forwarded-Host
主机名的X-Forwarded-Server
和www.example.org
HTTP标头。Location: http://www.example.org/events/
给出答案,而实际上应该是Location: http://server1.private.internal:5959/events/
myapp
路径。解决方法:
Apache支持配置选项ProxyAddHeaders Off
。使用此选项时,它将不会在步骤2中添加这些标头。然后,Rails会在Location标头中使用正确的内部URL进行回答,然后一切正常。
但是我不想在Apache中进行配置,我想在Rails应用程序中对其进行正确配置或编码。有人知道在哪里以及如何实现吗?