Apache-2.2
Apache:如何使我的網站僅在 SSL 上可用,而不是通過 HTTP 和 HTTPS?
Ubuntu
我在伺服器中有一個 tomcat Web 應用程序。Web 應用程序部署為ROOT
. 我已經安裝apache2
並通過VirtualHost
我將 IP 直接指向 tomcat Web 應用程序。所以我可以通過 IP(和域)直接訪問該站點,例如125.20.20.50
或example.com
.請檢查以下文件,該文件
000-default.conf
位於\etc\apache2\sites-enabled\
.<VirtualHost *:80> ProxyPreserveHost On # Servers to proxy the connection, or; # List of application servers: # Usage: # ProxyPass / http://[IP Addr.]:[port]/ # ProxyPassReverse / http://[IP Addr.]:[port]/ # Example: ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ ServerName localhost </VirtualHost> <VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /opt/apache-tomcat-7.0.79/webapps/ROOT/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine On # Set the path to SSL certificate # Usage: SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /etc/apache2/ssl/key.key SSLCertificateFile /etc/apache2/ssl/certificate.crt SSLCertificateChainFile /etc/apache2/ssl/STAR_xxx_com.ca-bundle ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ServerName localhost </VirtualHost>
如果我專門
https
在https://portal.example.com
. 情況是,如果我沒有特別提及但在瀏覽器中https
輸入類似的內容,我仍然可以在沒有安全性的情況下訪問該站點。portal.example.com
我怎樣才能解決這個問題?
如果我理解正確,您希望所有對http://portal.example.com/>的訪問都被重寫為<https://portal.example.com嗎?
為此,您只需用 RewriteRule 替換埠 80 VirtualHost 中的 ProxyPass 內容:
<虛擬主機 *: 80> 重寫引擎開啟 RewriteRule ^(.*) $ https://portal.example.com/$1 伺服器名稱 portal.example.com </虛擬主機>
這應該足以將所有內容重寫到您的 HTTPS 頁面。
注意:這確實保留了 URL 的其餘部分,因此這意味著
http://portal.example.com/random_page
變為https://portal.example.com/random_page
如果您只想將每個 HTTP 訪問重定向到根 HTTPS 頁面(因此
http://portal.example.com/random_page
將成為https://portal.example.com/
),您應該接受@HBruijn 的答案,因為它更簡單且足以應付這種情況。