我们在一个负载均衡器后面运行 Tomcat 7,该负载均衡器也可以作为 SSL 终结器,以及一个 Apache HTTP Server 2.4。Apache 通过mod_proxy_ajp连接到 Tomcat 。
对于应用程序,重要的是 Tomcat 知道请求是通过 HTTPS 进入的,因此是安全的。正如本文所建议的那样,通常在 Tomcat 的连接器上使用属性secure="true"
和可能的scheme="https" proxyPort="443"
. 虽然这可行,但由于我们也将 HTTP 用于某些目的,因此很不方便,因此我们需要为此目的设置两个 Tomcat 连接器。而且它有一种味道,因为这种方式基本上是告诉 Tomcat 覆盖它从 Apache HTTP 服务器获得的错误信息,即请求是 HTTPS 而不是 HTTP,而不是告诉 Apache 它应该发送有关协议和的正确信息安全状态。
所以我的问题是:是否有可能以某种方式配置 Apache HTTP 服务器本身,使其通过 AJP 协议传递正确的信息:请求是通过 HTTPS 接收的并且是安全的?问题是它不知道它是 HTTPS,因为它之前有一个 SSL 终止符,并且就它而言,请求是通过 HTTP 到达的。我可以以某种方式告诉 Apache 它实际上是 HTTPS 吗?