在使用nginx反向代碼wordpress的過程當中,因爲wordpress會對訪問的請求進行域名與端口是否與配置信息相同的判斷,將致使使用301的循環重定向錯誤。nginx
nginx配置以下:瀏覽器
server { listen 81; server_name www.codedemo.club; error_log /mengyunzhi/log/baeldung.cn-nginx.log info; add_header Cache-Control public; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 轉發host信息 proxy_set_header Host $host;
wordpress設置站點的url地址爲:http://www.baeldung.cn:81
。
則在上述兩個配置下使用瀏覽器訪問:http://www.baeldung.cn:81則會執行以下流程:wordpress
問題在於:nginx在進行數據發設置的Host並不包含端口信息,因此wordpress接收到的請求是:http://www.baeldung.cn:8000
此地址與http://www.baeldung.cn:81
並不相同,因此給出了重定向的回覆。瀏覽器接收到重定向,接着發起了對http://www.baeldung.cn:81
的請求,周而復始瀏覽器便出了301重定向次數過多的提示。oop
google嘗試找了些關於nginx如何反向代理wordpress或nginx反向代碼wordpress發生301 loop的問題,但並未找到答案。猜測多是因爲 wordpress這個重定向機制啓用的時間並不長,因此相關的問題暴露的很少形成的。google
經過前面的流程圖,最終猜想出瞭解決方案:轉發時設置Host時加入端口號:url
proxy_set_header Host $host:$server_port;
從新加載nginx配置後問題迎刃而解。spa
當一些問題查找不出緣由的時候,須要結合控制檯返回的信息並站在軟件設計者的角度大膽地猜想一下。一旦猜出了方向,即可以按照猜的方向進行嘗試。沒準就真猜對了呢。設計
本文做者:河北工業大學夢雲智開發團隊 潘傑
歡迎各位學子報考我校!代理