- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在负载平衡器(也用作 SSL 终结器)和 Apache HTTP Server 2.4 后面运行 Tomcat 7。 Apache 通过 mod_proxy_ajp 连接到 Tomcat .
对于应用程序,重要的是 Tomcat 知道请求是通过 HTTPS 传入的,因此是安全的。例如this article建议,通常使用属性 secure="true"
在 Tomcat 的连接器上配置它可能还有 scheme="https"proxyPort="443"
。虽然这可行,但它并不方便,因为我们也出于某些目的使用 HTTP,因此我们需要为此目的设置两个 Tomcat 连接器。它有一种味道,因为通过这种方式,我们基本上告诉 Tomcat 覆盖它从 Apache HTTP 服务器获得的错误信息,即请求是 HTTPS 而不是 HTTP,而不是告诉 Apache 它应该发送关于协议(protocol)的正确信息和安全状态。
所以我的问题是:是否有可能以某种方式配置 Apache HTTP 服务器本身,使其通过 AJP 协议(protocol)传递正确的信息:通过 HTTPS 接收请求并且是安全的?问题是它不知道它是 HTTPS,因为在它之前有一个 SSL 终止符并且请求通过 HTTP 到达,就它而言。我能以某种方式告诉 Apache 它实际上是 HTTPS 吗?
最佳答案
部分解决方案似乎是 to set the protocol on a ServerName directive在 Apache HTTP 服务器的虚拟主机中:
ServerName https://whatever
这样任何位置:重定向中的 header 似乎在 Apache 中被重写为 https,但 Tomcat 仍然通过 AJP 传递了错误的信息。
关于apache - 如何在 mod_proxy_ajp 的 apache HTTP 服务器中覆盖方案和 is_ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633966/
我是一名优秀的程序员,十分优秀!