使用 Apache 在 SSL 终结器后面的端口 443 上提供 http

Tra*_*sen 2 ssl apache-2.2

我们的网络运营人员已经设置了 SSL 终止,然后将请求反向代理给我们。他们的要求是,如果他们看到端口 443 上的输入,我们必须在端口 443 上提供内容,因此我们在端口 443 上提供未加密的内容。这是我们必须解决的不变量。

大多数情况下,这不是问题。我们Listen 443并且不设置 SSL,并且一切正常,除了...重定向。

例如,如果我们定义:

Alias /foo /path/to/foo
<Directory /path/to/foo>
    ...
</Directory>
Run Code Online (Sandbox Code Playgroud)

Apache 足够聪明,可以将请求重定向/foo/foo/. 当我们在端口 80 上使用 http 时,效果很好。然而,当客户端在端口 443 上使用 https 时,我们最终会得到一个Location类似这样的重定向:

Location: http://my.example.com:443/foo/
Run Code Online (Sandbox Code Playgroud)

问题是我们不想从安全协议重定向到不安全协议,这并不重要,因为我们不在端口 443 上提供不安全的内容。

我猜有更好的方法告诉 Apache 这个请求最初是一个安全请求,但我不太了解 Apache 配置。我希望我不必为每个Directory条目手动创建重定向,特别是因为某些内容以安全和不安全的形式提供。

任何人都有任何可以提供帮助的文档的指示(不幸的是,我无法想出正确的谷歌咒语来提供帮助)?处理此问题的最佳方法的指针也受到赞赏。:)

小智 5

ServerName的文档中描述了这种情况:

有时,服务器在处理 SSL 的设备后面运行,例如反向代理、负载平衡器或 SSL 卸载设备。在这种情况下,请在 ServerName 指令中指定 https:// 方案和客户端连接到的端口号,以确保服务器生成正确的自引用 URL。

如果您想这样做并同时保持端口 80 工作,则必须至少为其中一个使用 VirtualHost,因此您可以添加单独的 ServerName。