ERR_TOO_MANY_REDIRECTS
(過多重新導向)錯誤通常是由重新導向設定不當導致的,可能形成了無限迴圈。如果你使用的是 Nginx 伺服器加上 Cloudflare,可以依照以下步驟進行排查與修復:
1. 檢查 Cloudflare 的 SSL/TLS 設定
- 問題來源:Cloudflare 的 SSL 模式與伺服器的 SSL 設定可能不一致。
- 解決方法:
- 登入 Cloudflare 後台。
- 進入 SSL/TLS 頁籤。
- 確認 SSL 模式是否正確:
- Flexible:適用於伺服器未配置 SSL 的情況(不推薦,因為安全性較低)。
- Full:伺服器有啟用 SSL,但不檢查憑證。
- Full (Strict):伺服器有有效的 SSL 憑證。
- 如果使用 Flexible,請確保伺服器端 不要進行 HTTPS 重新導向,否則會造成迴圈。
2. 檢查 Nginx 設定檔
- 問題來源:Nginx 的重新導向規則配置錯誤,可能導致無限迴圈。
- 解決方法:
- 開啟 Nginx 設定檔,通常位於
/etc/nginx/sites-available/yourdomain.conf
- 避免不必要的重複導向規則。
- 開啟 Nginx 設定檔,通常位於
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 將 HTTP 強制導向 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
# SSL 憑證設定
ssl_certificate /path/to/ssl/certificate.crt;
ssl_certificate_key /path/to/ssl/private.key;
# 網站的主要設定
root /var/www/html;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
}
3. 檢查 HTTP_X_FORWARDED_PROTO
標頭
- 問題來源:Cloudflare 使用代理標頭傳遞原始協議,但如果 Nginx 未正確辨識,可能導致重導迴圈。
- 解決方法:
- 確保 Nginx 處理
HTTP_X_FORWARDED_PROTO
標頭。
- 確保 Nginx 處理
set $forwarded_proto $http_x_forwarded_proto;
if ($forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
4. 清除 Cookies
- 問題來源:損壞的 Cookies 可能會引發此錯誤。
- 解決方法:清除瀏覽器中與該網域相關的 Cookies,然後重新載入網站。
5. 檢查 Cloudflare 的 Page Rules
- 問題來源:Cloudflare 的 Page Rules 配置可能與伺服器重導規則衝突。
- 解決方法:
- 登入 Cloudflare 後台。
- 進入 Page Rules 頁籤。
- 檢查是否有規則導致 HTTPS 或其他重導產生衝突。
6. 清除快取
- 問題來源:修復後,快取的錯誤導向可能仍然生效。
- 解決方法:
- 在 Cloudflare 後台進行 Purge Cache 操作。
- 清除瀏覽器快取。
7. 啟用 Cloudflare 的 “Development Mode”
- 作用:暫時繞過 Cloudflare 的快取,直接測試伺服器設定。
- 操作:
- 在 Cloudflare 後台啟用 Development Mode。
- 測試是否能正常運行。
8. 檢查日誌文件
- 如果上述方法無法解決,查看 Nginx 的日誌來進一步排查:
- 存取日誌:
/var/log/nginx/access.log
- 錯誤日誌:
/var/log/nginx/error.log
- 存取日誌:
範例完整設定檔
以下是一個適用於 Nginx 搭配 Cloudflare 的基本配置:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 將 HTTP 強制導向 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL 憑證配置
ssl_certificate /etc/ssl/certs/cloudflare.crt;
ssl_certificate_key /etc/ssl/private/cloudflare.key;
# Cloudflare 專用設置
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
real_ip_header CF-Connecting-IP;
location / {
try_files $uri $uri/ =404;
}
}
依照上述步驟逐一檢查與修改,相信可以解決 ERR_TOO_MANY_REDIRECTS
的問題。如果需要進一步協助,請隨時告訴我!