webzod
account

Add the Strict-Transport-Security (HSTS) header on nginx

tls.hsts.missing · effort: about an hour

Why it matters

Without HSTS, a browser that is sent to the http:// address first can be intercepted before it reaches the secure site. The header tells browsers to use HTTPS only, for as long as you specify.

Staged change. Do this in stages and check each one before the next, so a mistake does not break your site or your mail.

The fix

  1. Put the directive in the server block that listens on 443. The always parameter makes nginx send it on error responses too.
  2. add_header directives are inherited from the enclosing level only when the current level has none. If a location block defines its own add_header, repeat this line there.
  3. Test with nginx -t, reload, and check with curl -sI.
  4. Raise max-age in the stages from the generic steps (86400, then 2592000, then 31536000), reloading each time.
/etc/nginx/conf.d/site.conf
add_header Strict-Transport-Security "max-age=300" always;

Read the documentation (opens in a new tab)

Scan your domain to see whether this applies to you.