我运行Nginx(ssl)的配置 - > apache - > tomcat的。 Nginx解码ssl并使用X-SSL-Request=1
标头将请求转发给apache(然后转发到tomcat)。我正在寻找一种在我的应用程序中启用正确的ssl行为的好方法,而不会使我的apache配置更复杂。如果我们决定弃用apache(从而删除AJP协议使用并仅依赖于http),这感觉就像是更好的解决方案。另一种方法是使用apache将env.HTTPS
更改为on
。但是我很好奇这个方法出错了。
这是我的过滤器配置:
<filter>
<filter-name>RemoteIpFilter</filter-name>
<filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
<init-param>
<param-name>protocolHeader</param-name>
<param-value>X-SSL-Request</param-value>
</init-param>
<init-param>
<param-name>protocolHeaderHttpsValue</param-name>
<param-value>1</param-value>
</init-param>
</filter>
现在我有一个控制器用于测试实际控制器在所有这些之后看到的内容,我得到:
Request protocol HTTP/1.0
Request secure true
Request server port 443
Request url http://localsecure.xxx/common/requestTest.html
Request uri /common/requestTest.html
Request scheme https
现在,春天webflow似乎读到了“http”是用于创建重定向的协议,因此所有重定向都呈现为http://localsecure.xxx/...
而不是预期的https://localsecure.xxx/...
。我唯一的线索是tomcat仍然认为请求网址是http://
。
答案 0 :(得分:1)
我认为这是RemoteIpFilter
中的错误。 getRequestURL
方法不会被原始请求覆盖和处理。
更新赞赏该项目。它已经修复:https://bz.apache.org/bugzilla/buglist.cgi?quicksearch=remoteipfilter&list_id=135019