本篇想分享如何在reverse proxy上將wordpress加上SSL
因為在一般的web server上已經有許多文章介紹了
但是在reverse proxy上卻少有文章
藉此想與大家分享
一般網站要將wordpress加上https第一是讓後台加入
define('FORCE_SSL_ADMIN', true);
再來是到設定前台裡site url 但是這樣設定對於reverse proxy會照成
::ERR TOO MANY REDIRECTS 無限循環的redirect
原因其實很簡單,就是wordpress會偵測來源$_SERVER是不是https
但是reverse proxy是將其轉址到80 port的web server
所以對於wordpress來說就不是https,就會強制redirect到https,如此就照成無限循環redirect
要解決這個問題只要在wp-config.php加上這樣的判斷
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
HTTP_X_FORWARDED_PROTO會存這revers proxy近來是的header
所以可以用此來判斷進來時是不是https 若是就將header的https設為on
其實wordpress可以用一個方便的plugin(ssl-insecure-content-fixer)
它不僅可以強制使用https
更可以將全網的internal links設定為https
這樣就不會有mixed content的問題了~真是太強了
非常簡單使用
只要在Fix insecure content選擇Capture(雖然效能會受些影響)
下面HTTPS detection非常重要一定要選HTTP_X_FORWARDED_PROTO
這樣就可以將全站所以有內部連結轉成https了