【问题标题】:Redirect a HTTP page to HTTPS with ProxyPass to Tomcat server使用 ProxyPass 将 HTTP 页面重定向到 HTTPS 到 Tomcat 服务器
【发布时间】:2016-02-10 09:16:14
【问题描述】:

所以我有一个运行在端口 8080 上的 tomcat 服务器,以及一个运行在端口 80 和 443 上的 apache 服务器。我可以使用这些虚拟主机让整个网站重定向到 https:

<VirtualHost *:80>
    Redirect permanent / https://localhost
</VirtualHost>

<VirtualHost _default_:443>
    SSLEngine on
    SSLCertificateFile /etc/httpd/crt/localhost.crt
    SSLCertificateKeyFile /etc/httpd/crt/localhost.key
    ProxyRequests off
    ProxyPreserveHost on
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /catdapp http://localhost:8080/
    ProxyPassReverse /catdapp http://localhost:8080/
</VirtualHost>

但是,我试图让它只在 url 为 localhost/#/loginlocalhost/catdapp/#/login 时重定向到 https

我尝试了以下方法:

<VirtualHost *:80>
    Redirect permanent /#/login https://localhost/#/login
    Redirect permanent /catdapp/#/login https://localhost/#/login
    ProxyRequests off
    ProxyPreserveHost on
    ProxyPass /#/login !
    ProxyPass /catdapp/#/login !
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /catdapp http://localhost:8080/
    ProxyPassReverse /catdapp http://localhost:8080/
</VirtualHost>

哪个不起作用,控制台显示它正在检索http://localhost/catdapp/partials/login.html,所以我尝试将其更改为:

<VirtualHost *:80>
    Redirect permanent /catdapp/partials/login.html https://localhost/catdapp/partials/login.html
    ProxyRequests off
    ProxyPreserveHost on
    ProxyPass /catdapp/partials/login.html !
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ProxyPass /catdapp http://localhost:8080/
    ProxyPassReverse /catdapp http://localhost:8080/
</VirtualHost>

这会导致 Firefox 控制台输出两个错误:

GET http://localhost/catdapp/partials/login.html 301 Moved Permanently
GET https://localhost/catdapp/partials/login.html 200 OK

apache访问日志显示:

"GET /catdapp/partials/login.html HTTP/1.1" 301 328 "http://localhost" "Mozilla/5.0 (X11; Linux x84_64; rv:38.0) Gecko/20100101 Firefox/38.0"
"GET /catdapp/partials/login.html HTTP/1.1" 200 2054 "http://localhost" "Mozilla/5.0 (X11; Linux x84_64; rv:38.0) Gecko/20100101 Firefox/38.0"

有什么想法吗?

【问题讨论】:

    标签: apache http tomcat redirect https


    【解决方案1】:

    # 在客户端处理,在浏览器中 - 我没有看到它传输到服务器。

    我不再担心混合模式操作,而是无条件地将所有内容重定向到 https 并继续:使用 http/https 混合模式,您只会打开许多​​意外的安全漏洞、会话泄漏或其他(现在)它只是不值得麻烦。将HSTS header 添加到 https-virtual-host,即使您不小心使用了错误的协议(一旦客户端看到 HSTS 标头,这应该是常态),您甚至是安全的

    这会消耗更多的服务器端资源吗?大概,有点。有关系吗?措施!如果您拥有值得保护的资源,则值得排除一整类错误,例如会话信息泄漏、网络钓鱼、MITM 攻击等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2018-03-14
      • 2022-08-22
      • 2017-10-21
      • 2013-10-18
      相关资源
      最近更新 更多