我安装了一个反向代理Apache服务器,它处理一个tomcat的SSLencryption。 我们有一个struts Web应用程序,每次使用response.sendRedirect() ,应用程序都会回到正常的HTTP协议,而不是停留在HTTPS上。 应用程序必须使用两种协议运行,并且我无法通过tomcat容器处理SSL。
我可以使用HTTPS并通过链接和操作进行浏览。 但是如果我来到一个使用redirect的动作,它将只是HTTP。 为什么?
SSLProxyEngine [off|on] # (Differs between the ssl and the other normal conf) ProxyPreserveHost On ProxyPass / http://mysite:1234/ ProxyPassReverse / http://mysite:1234/
这是我的configuration。 我想在SSLconfiguration切换http到https ,但导致这样的:
错误的网关
- 如何在Oracle10g或Tomcat中更改Http服务器的端口号?
- 使用mod_wsgi和mpm_itk:socket权限问题
- 如何禁用特定虚拟主机apache的gzip压缩
- 用django和apacheconfigurationhtaccess
- Apache httpd LDAP集成
代理服务器收到来自上游服务器的无效响应。 此外,尝试使用ErrorDocument处理请求时遇到502错误网关错误。
我如何获得redirect到HTTPS?
如果sendRedirect使用相对path,Tomcat将添加包括scheme(http / https)和servername的绝对元素。
计划将默认为http,除非您覆盖它。 服务器名将来自你已经仔细通过的主机头。
我有同样的问题,并使用一个新的Tomcat连接器(沿着现有的一个)在一个单独的端口覆盖的scheme,并设置端口好措施:
<Connector port="8443" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" scheme="https" proxyPort="443"/>
然后在Apache中,SSL虚拟主机具有:
ProxyPass / http://<tomcat_server>:8443/
普通的HTTP虚拟主机继续使用现有的连接器端口(8080)
或者,您可以在调用sendRedirect()时硬编码redirect位置,但显然不灵活。