Nginx
將 HSTS 添加到 nginx 配置
我最近更改了我的 nginx 配置,將所有 http 流量重定向到 https(所有 www 流量重定向到 no-www)。
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
也添加到我的伺服器塊是否有意義?或者這是不需要的,因為我已經重定向了所有流量?很高興知道利弊(如果有的話)。如果相關,我目前的虛擬主機配置是:
server { server_name example.com www.example.com; listen 80; return 301 https://example.com$request_uri; } server { server_name www.example.com; listen 443 ssl; ssl_certificate /etc/nginx/ssl/cert_chain.crt; ... other SSL related config ... return 301 https://example.com$request_uri; } server { server_name example.com; listen 443 ssl; ... other SSL related config ... ... remaining server configuration ... }
HSTS 告訴瀏覽器始終使用 https,而不是 http。添加該配置可能會減少從 http 轉發到 https 的需要,因此它可能會略微提高網站性能並略微降低伺服器負載。
作為參考,這是我在基於 Nginx 的網站上使用的安全標頭。我將它保存到一個文件中,並將它包含在所有需要它的伺服器中,包括 http 和 https 伺服器。它允許載入一些常見的資源,例如 Google 和 Facebook。
# Security headers add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; add_header Content-Security-Policy "default-src 'self' www.google-analytics.com ajax.googleapis.com www.google.com google.com gstatic.com www.gstatic.com connect.facebook.net facebook.com;"; add_header X-XSS-Protection "1; mode=block"; add_header Referrer-Policy "origin";
澄清
您仍然需要適當的 http 到 https 重定向。