Nginx
Nginx 上的“如果可能,請刪除以下重定向鏈”
我在我的 1 個純 html 文件站點上執行了 Pingdom 測試,並為此獲得 F 評級:
如果可能,刪除以下重定向鏈:
http://example.com/ http://www.example.com/ https://www.example.com/
我的 .conf 中唯一的重定向是:
server { listen 80; server_name example.com; return 301 $scheme://www.example.com$request_uri; }
下一個塊是 SSL 和其餘部分。
server { listen 443 ssl http2; etc... }
沒有其他配置。我需要的只是將非 www 重定向到 www 並且始終只重定向 https 並通過測試。
更新:完整的.conf
server { listen 80; server_name example.com; return 301 https://www.example.com$request_uri; } server { listen 443 ssl http2; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5'; ssl_dhparam /etc/nginx/ssl/dhparams.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security max-age=15768000; root /var/www/example.com/htdocs; server_name example.com www.example.com; location / { autoindex on; try_files $uri $uri/ =404; } location ~* /img/.*\.gif$ { expires 30d; add_header Pragma public; add_header Cache-Control "public"; } }
只需更改
$scheme
為https
,我一開始不知道為什麼會出現這種情況,因為http
除非您的使用者正在做一些奇怪的事情,否則您不太可能獲得除埠 80 以外的任何東西。編輯:添加缺少的 https->https 重定向。
沒有註意到您實際上沒有明確的
default_server
. 遵循以下原則:server { listen 80; server_name example.com www.example.com; return 301 https://www.example.com$request_uri; } server { listen 443; server_name example.com; return 301 https://www.example.com$request_uri; }
if
Ashish 的回答可能有效,但我會盡可能遠離(閱讀If is Evil)。