我有一個ec2實例,使用apache2作爲Web服務器正確安裝了我的網站文件。 ec2被配置爲只接收來自elb的端口80上的http流量(非常確定,但不是100%)。 elb有一個https監聽器(端口443)和一個http監聽器(端口80)。根據aws文檔解密數據後,elb將流量發送到ec2實例。我的問題是,我無法弄清楚如何將所有流量重定向到http到https的負載均衡器。Apache2不重定向到https
我試着在網站的虛擬主機和apache2.conf中使用這個重寫規則,但它沒有任何一種效果(也沒有錯誤)。
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
整個虛擬主機看起來像這樣(位於/etc/apache2/sites-available/SewaneeEats.conf):
ServerName classicloadbalancer-1929710381.us-east-1.elb.amazonaws.com
ServerAdmin [email protected]
DocumentRoot /var/www/html/SewaneeEats/public
<Directory /var/www/html/SewaneeEats>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
我也可以確認該模塊重寫已啓用。
所以當我輸入網址sewaneeeats.com(這些鏈接是活的,如果你需要檢查出來),它仍然是sewaneeeats.com(沒有任何ssl),而不是重定向。我知道ssl正在處理https://www.sewaneeeats.com。在https://sewaneeeats.com上,我在chrome的url欄中看到一個破損的ssl紅色符號。我認爲它在https://sewaneeeats.com網址上被破壞的原因是因爲該證書是爲www子域名註冊的,但我不確定。該域使用aws的路由53控制檯進行配置,因此如果它有幫助,我可以提供相關信息。
任何幫助將非常感激,因爲我一直試圖找出這約12小時左右。本來會在serverfault.com上發佈這個,但是我不能,因爲當我在10個代表下時,我只能有一個問題的2個鏈接。
其中是sewaneeeats.com到www.sewaneeeats.com重定向在您的配置?至於SSL證書,我看到您使用的是由亞馬遜發行的證書,您可以將附加域名添加到證書中,只需添加sewaneeeats.com和www.sewaneeeats.com(您可能必須創建新證書) – at0mzk
@ at0mzk重寫規則位於站點的虛擬主機配置文件中,即/etc/apache2/sites-available/SewaneeEats.conf文件。我將嘗試向證書添加其他域 – Daniel
@ at0mzk我最終創建了一個新證書,該證書添加了所有子域以及裸域。感謝您的提示! – Daniel