最近公司站群遷移,備份Web文檔,導出數(shù)據(jù)庫,再還原到目標服務(wù)器(上傳,解壓,導入數(shù)據(jù)庫),改數(shù)據(jù)庫配置信息,一頓操作猛如虎,最后發(fā)現(xiàn)網(wǎng)站全不能訪問了,Chrome提示當前頁面重定向次數(shù)過多,打開Console一看,全是301重定向到當前頁面的
導致這個問題的最根本原因還是我想偷懶,想利用Cloudflare的SSL的靈活模式,省去源服務(wù)器申請SSL的步驟,因為免費的SSL品牌Let's Encrypt每三個月就要申請一次,怕忘記導致網(wǎng)站HTTPS失效
Cloudflare SSL靈活模式示意圖
但是我們這次是遷移站點,不是新建站點,所以原來數(shù)據(jù)庫里的固定鏈接和配置全都是帶https的絕對路徑,而我偷懶又沒給源站點開啟https,所以當Clouflare去訪問源站點的時候,源站點又會重定向繼續(xù)訪問https站點,這樣就形成了死循環(huán)
知道這點后,解決辦法也就明確了:即給每個源站點申請SSL即可,Cloudflare這邊的SSL配置為完全嚴格模式
下面具體描述一下重定向過多的坑位有哪些:
官方文檔明確表示,大部分都是SSL配置的方式不對引起的,我們這次也不例外
確保在服務(wù)器提供商這邊的防火墻(安全規(guī)則)開啟了443端口入方向的權(quán)限,即https需要用到的端口,否則申請了SSL也打不開網(wǎng)站,阿里云,騰訊云尤其注意這個設(shè)置
如果已經(jīng)開啟Cloudflare代理模式,而且是使用寶塔自動申請SSL的,需先關(guān)閉代理模式,等待10分鐘左右生效后再去申請SSL,否則域名校驗通不過(因為校驗的時候會直接去訪問https站點了),申請成功后再開啟Cloudflare代理模式,并且把SSL設(shè)置為完全嚴格模式
如果源站是自簽SSL選擇嚴格模式,如果源站不開啟SSL,則選擇靈活模式
將www記錄解析為A記錄,不要解析為CNAME記錄指向主域名,因為如果WordPress設(shè)置的固定網(wǎng)址帶www,而www網(wǎng)址又通過CNAME不斷往非www網(wǎng)址跳轉(zhuǎn),這時WordPress又會強制跳轉(zhuǎn)回www子域名,形成死循環(huán)
寶塔面板自動申請SSL,如果失敗關(guān)閉Cloudflare代理后重試
www子域名也使用A記錄來做解析,切記不要使用cname來解析,開啟/關(guān)閉代理也在這里設(shè)置
以上就是這次站群遷移踩的坑,如果您也遇到同樣問題,希望本文能有所幫助!大家對Cloudflare全球云加速有興趣或疑問的,歡迎關(guān)注公眾號“不用上班的程序員”可添加我交流!