AWS 已經架好了ALB環境和https
https://www.abc.com 是可以成功加密的
可是使用者輸入http://www.abc.com
還是可以進入未加密網頁
找了網上一些資料用apache 的設定檔內加入
RewriteEngine去做轉換反而連不進去
因為AWS的SSL憑證是架構在ALB上面
Web Server沒有安裝過憑證
所以如果在Server上直接轉成https
照理說也無法直接轉換成https,會出現錯誤
那在ALB的環境下
要怎麽做http自動轉https的功能?
如果把listener 80砍了 這樣不就連輸入http都進不去了
希望有經驗的大大分享經驗
HTTP 标头:应用程序负载均衡器和传统负载均衡器均支持 X-Forwarded-For、X-Forwarded-Proto 和 X-Forwarded-Port 标头。
其中,X-Forwarded-Proto會寫明是Http還是Https,後端應用程式以此為據來判斷是否要要求使用者轉址即可
阿帕奇的教學請參照這篇,同時若是有幫到您,請不吝給我最佳解答
https://stackoverflow.com/questions/26620670/apache-httpx-forwarded-proto-in-htaccess-is-causing-redirect-loop-in-dev-envir
大大真的強,能說明一下X-Forwarded-Proto的原理嗎?
目前我輸入ELB的DNS端點,已經可以成功切入https,網頁也正常
在網路上找了一堆RewriteEngine全部沒法用
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
一進入https不是拒絕連線就是重導向過多,還搞不清為什麼
你想想使用者、反向代理(在這裡是ELB)與伺服器所面對的對象與視角,還有他們的工作。
回答看看~
使用者以http;https協定連線至ELB,ELB會分配流量到Server,這架構應該就這樣
因為https憑證架設在ELB上,Server沒有憑證
使用者使用http連線被導到Server之後發現沒有憑證
所以要重導向回ELB重新以https連線,取得https憑證,再載入整個網站,不知道我猜的正確嗎?
不對~晚上下課再詳細講吧(目前大二
原本的Rewrite寫法會造成重導向過多的問題可以理解了,原來在前面就被解密了
那為什麼X-Forwarded-Proto的寫法會運作正常?
我自己在 LBS 和 EC2 做 https 的方法如下,給你參考:
這樣連 http 和 https 都通得到,但是 http 會被強制導向 https
我是沒有這樣做過,不過如果 ACM 的憑證可以匯出,我想也許一樣可以,畢竟 web server 就是載入憑證和key。
如果上面那條路行不通,ssl 憑證也有便宜的,可以考慮看看。如果不想花錢,也可以參考這裡申請免費的憑證以及後續的更新,做一次工,之後就省事了: https://letsencrypt.tw/
Apache 和 Nginx 差不多,一樣在 web server 的設定檔上設定,將來 80 port 的流量通通導去 https 即可,下面這個網址有兩種作法,你可以參考看看: https://www.phpini.com/apache/apache-http-to-https-redirect
謝謝提供資訊,觀念上有學到東西