应用程序重定向将请求发送回 http

应用程序重定向将请求发送回 http

要求: 我们最近将我们的网站(公司内部)升级为 https。但是,许多团队要求我们将 http 支持延长 30 天。这是为了让非技术用户能够更新他们的书签、要渗透的信息等。

设置: Apache 2.x Web 服务器反向代理请求到 Apache Tomcat 8 服务器。

Apache 配置: 为了支持 http,使用了下面的配置。

<VirtualHost *:80>
  ServerName localhost:80
  ProxyPass         /appName http://localhost:8080/appName
  ProxyPassReverse  /appName http://localhost:8080/appName
</VirtualHost>

为了支持 https,

<VirtualHost *:443>
  SSLEngine on
  SSLProxyEngine on
  ServerName domainname.com:443
  SSLCertificateFile "${SRVROOT}/conf/ssl/cerSan.pem"
  SSLCertificateKeyFile "${SRVROOT}/conf/ssl/certSan.key"
  DocumentRoot "${SRVROOT}/htdocs"
# DocumentRoot access handled globally in httpd.conf
    CustomLog "${SRVROOT}/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    <Directory "${SRVROOT}/htdocs">
        Options Indexes Includes FollowSymLinks
        AllowOverride AuthConfig Limit FileInfo
    Require all granted
    </Directory>
  ProxyPass         /appName http://localhost:8080/appName
  ProxyPassReverse  /appName http://localhost:8080/appName
 </virtualhost>

Tomcat 配置:

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000" address="127.0.0.1" 
               redirectPort="8443" />

问题:每当应用程序执行

((HttpServletResponse) response).sendRedirect("/appName/pages/login.jsp");

在登录等过程中,应用程序会切换回 http。我理解这是按照规范工作的。

会发生什么 :

http://域名.com==>http://域名.com/应用程序名称

https://域名.com==>http://域名.com/应用程序名称

https://域名.com/appName==>https://域名.com/appName

我尝试了这里给出的方法回答通过添加额外的 tomcat 连接器并反向代理该端口。在这种情况下,会添加额外的上下文并返回 404 请求。

https:域名.com/appName ==> https:域名.com/appName/appName。

然后我尝试删除 apache 配置中的上下文。

 ProxyPass         / http://localhost:8080/appName
 ProxyPassReverse  / http://localhost:8080/appName

这导致

https://域名.com==> tomcat 默认登陆页面

我还阅读了其他一些博客文章,他们建议重写代码。由于其他优先事项,应用程序团队需要一周时间在代码中修复此问题。

同时有没有办法通过服务器级配置来处理这个问题?哪些额外/不同的配置可以帮助我们实现要求

相关内容