Apache-2.2
如何強制 Apache 將 HTTPS 與 AJP 結合使用?
我們有一個 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]