cloudflare – 元兒~ 技術筆記(舊站) / 本站不再維護更新,新內容請移駕去新站 Thu, 19 Jun 2025 00:53:14 +0000 zh-TW hourly 1 https://wordpress.org/?v=6.8.1 /wp-content/uploads/2022/09/pc-programming-icon-150x150.png cloudflare – 元兒~ 技術筆記(舊站) / 32 32 處理WordPress經過Cloudflare的https對應 /tech/cloudflare-worepress-https/ /tech/cloudflare-worepress-https/#respond Wed, 18 Jun 2025 16:45:31 +0000 /?p=886 這應該是倒數第二篇了吧,想不到為了裝靜態化要用的Plugin,結果被逼要先升級系統,然後在升級系統的過程中又遇到對外線路有問題,在處理的時候就乾脆來寫經驗心得文做個紀錄。

我這邊的主機線路是:
對外網 — Cloudflare — Reverse Proxy — WordPress

Cloudflare設定的地方在

Dashboard→「SSL/TLS」→「概觀」→「自訂SSL/TLS」那邊

一個解法:Cloudflare走flexable模式

好處:簡單方便 缺點:是強制主機送https超連結,主機自身自己不知道有https,容易造成線路混亂。

我的網路線路就是:

對外網 Cloudflare Reverse Proxy WordPress
  https 443 http 80  

WordPress主機視角: 全程都是http,不知道自己是https

從Cloudflare到Worepress這段走80純http,但是對外到Cloudflare這邊走https。
因為Wordpress自己不知道是走https,所以由Wordpress輸出的所有連結都會是http,必須手動改設定強制都送https超連結。

改wp-config.php 強制開 HTTPS:

$_SERVER['HTTPS'] = 'on';

另一個解法:Cloudflare走full模式(我最後採用的方案 )

缺點:設定麻煩一些 好處:可以讓目標主機知道

我的網路線路就是:

對外網 Cloudflare Reverse Proxy WordPress
  https 443 http 80  

WordPress主機視角: 雖然傳輸是http,但可以從封包header知道現在是https

然後Reverse Proxy這層要加入以下內容,讓可以識別是不是https的header能正確傳給Wordpress那邊:

proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;

wp-config.php

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

本來想說這篇寫在新站,不過想想是和Wordpress有關,所以還是先當作這裡Wordpress舊站的倒數兩篇吧~

參考資料

]]>
/tech/cloudflare-worepress-https/feed/ 0