我们的网络运营人员已设置 SSL 终止,然后将请求反向代理给我们。他们的要求是,如果他们在端口 443 上看到输入,我们必须在端口 443 上提供内容,因此我们在端口 443 上提供未加密的内容。这是我们必须解决的一个不变量。
在大多数情况下,这不是问题。我们Listen 443
不会设置 SSL,一切都正常,除了...重定向。
举个例子,如果我们定义:
Alias /foo /path/to/foo
<Directory /path/to/foo>
...
</Directory>
Apache 非常聪明,可以将请求重定向到/foo
。/foo/
当我们在端口 80 上使用 http 时,它工作得很好。但是,当客户端在端口 443 上使用 https 时,我们最终会得到一个重定向,如下所示Location
:
Location: http://my.example.com:443/foo/
问题是我们不想从安全协议重定向到不安全的协议,但这并不重要,因为我们不在端口 443 上提供不安全的内容。
我猜想有更好的方法可以告诉 Apache 此请求原本是安全请求,但我不太了解 Apache 配置。我希望不必为每个Directory
条目手动创建重定向,尤其是因为某些内容既有安全形式也有不安全形式。
有没有人能提供一些文档帮助(不幸的是,我找不到合适的谷歌咒语来帮助)?如果能提供处理这个问题的最佳方法,也非常感谢。:)
答案1
此场景在以下文档中进行了描述:服务器名称:
有时,服务器会在处理 SSL 的设备(例如反向代理、负载平衡器或 SSL 卸载设备)后面运行。在这种情况下,请在 ServerName 指令中指定 https:// 方案和客户端连接的端口号,以确保服务器生成正确的自引用 URL。
如果您想这样做并同时保持端口 80 工作,则必须至少对其中一个使用 VirtualHost,这样您就可以添加单独的 ServerName。