【发布时间】:2014-08-13 11:26:37
【问题描述】:
我在 Weblogic (10.3) 应用程序中有一个 webapp。 Weblogic 在端口 7001 上侦听常规连接,在端口 7002 上侦听 SSL 连接。
该应用程序位于 Sun ONE Web 服务器(aka iPlanet)6.1 之后,该服务器在端口 80 上侦听 HTTP 请求,并在端口 443 上侦听 HTTPS 请求,并重定向到适当的 weblogic 端口。
我希望我的 webapp 仅在安全连接上运行,因此我在 web.xml 文件中添加了security-constraint:
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
这会将传入的请求正确重定向到 HTTPS,但还会将 weblogic 端口附加到 URL。例如,传入的请求http://example.com/ 被重定向到https://example.com:7002/。这是一个问题,因为:
- 我不希望用户看到该端口
- 更重要的是,不会显示静态资源,因为网络服务器不知道如何为它们提供服务(它需要端口 443 上的 SSL 请求)。
- 无论如何,在生产中都会有一个 SSL 卸载程序,我不确定 Weblogic 是否会监听 SSL 端口,所以它可能根本无法工作。
有没有办法配置重定向,以便除了协议之外不触及传入的 URL?这样http://example.com/ 就会被重定向到https://example.com/?
这与How to avoid redirecting to SSL port 基本相同,但针对Weblogic。理想情况下,它应该是特定于 webapp 的解决方案,但我也愿意接受应用程序范围或最坏情况下服务器范围的解决方案。
【问题讨论】:
标签: redirect web-applications ssl weblogic port