Apache-2.2

如何強制 Apache 將 HTTPS 與 AJP 結合使用?

  • January 20, 2020

我們有一個 Apache 網站,其中某些部分由 JBoss 提供支持。問題是,我們如何讓 Apache 強制將所有 HTTP 請求重定向到 HTTPS 等價物?

在我們的舊伺服器(CentOS 4、Apache 2.0、mod_jk)上,我們有以下配置:

<VirtualHost 1.2.3.4:80>
Redirect / https://www.foo.com/
</VirtualHost>

這很好用——任何對 PHP、普通 HTML 或 JBoss 驅動的網頁的請求都會被重定向。然而,在我們的新伺服器(CentOS 5、Apache 2.2、mod_proxy_ajp)上,相同的配置適用於普通頁面——不適用於使用 AJP 發送到 JBoss 的任何內容。

我還嘗試了以下方法,我在http://www.webmasterworld.com/apache/3050511.htm找到了這些方法:

<Proxy *>
   RewriteEngine on
   RewriteCond %{SERVER_PORT} !^443$
   RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Proxy>

但仍然沒有運氣。我覺得我錯過了一些明顯的東西。有什麼幫助嗎?

PS我絕不是Apache專家。如果這是一個初學者問題,我深表歉意:-P。

如果我理解正確,您希望將所有 http 請求升級到 https。如果這是正確的試試這個

<VirtualHost ip:80>
  ServerName www.company.com

  RedirectMatch permanent ^(.*)$ https://www.company.com$1
</VirtualHost>

<VirtualHost ip:443>
  ServerName www.company.com

  Include vhosts.d/includes/ssl.conf

  # assumes you want to proxy everything on this vhost to jboss:8009
  <Location / >
      ProxyPass ajp://jboss:8009/
  </Location>
</VirtualHost>

此語法將重定向到 HTTPS,保持主機和 URL 相同:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

有時您只想重定向一個目錄,即一個管理區域:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/admin(|/.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

引用自:https://serverfault.com/questions/6128