我有一个在私有子网上运行的rails应用程序,使用端口8080,没有启用SSL。我在DMZ上也有一个Apache SSL服务器,我用它作为我首先提到的rails应用程序的反向代理。
问题是,rails在生成的代码中包含一些绝对URL,地址以http://开头...
如果我在这里或那里使用config.force_ssl = true,则会有无限重定向,因为rails将请求视为普通HTTP并发出重定向到HTTPS,但客户端已经是。
解决方案很简单:将此行放在反向代理配置文件中:
RequestHeader设置X-Forwarded-Proto“https”