温馨提示×

Debian Nginx SSL怎么开启HSTS

小樊
39
2026-08-29 09:33:29
栏目: 云计算

Debian + Nginx 环境下开启 HSTS(HTTP Strict Transport Security),配置非常简单,下面按步骤说明。


一、前提条件

✅ 已启用 HTTPS(SSL 证书已配置)
✅ 使用 Nginx
✅ 域名已可通过 HTTPS 正常访问

如果你还没配置 SSL,可以先看:

nginx -t
systemctl status nginx

二、最简单的 HSTS 配置(推荐)

编辑你的 Nginx HTTPS 站点配置,例如:

/etc/nginx/sites-available/your-site

443 ssl 的 server 块中加入:

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    # 开启 HSTS
    add_header Strict-Transport-Security "max-age=31536000" always;

    # 其他配置
    root /var/www/html;
    index index.html;
}

max-age=31536000 表示 1 年(单位:秒)


三、包含子域名(强烈推荐)

如果你的站点有子域名(如 www.example.comapi.example.com):

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

四、开启 HSTS Preload(最严格)

如果打算加入 浏览器 HSTS Preload List(不可逆,谨慎):

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

⚠️ 注意:

  • preload 提交后 几乎无法撤销
  • 所有子域名必须支持 HTTPS
  • 提交地址:https://hstspreload.org/

五、HTTP 强制跳转 HTTPS(建议一起配置)

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

六、验证配置并重启 Nginx

nginx -t
systemctl reload nginx

七、验证 HSTS 是否生效

方法 1:浏览器

打开:

https://example.com

控制台 → Network → 查看响应头:

Strict-Transport-Security: max-age=31536000

方法 2:curl

curl -I https://example.com

八、常见注意事项(非常重要)

不要在 HTTP 站点上加 HSTS
不要设置过小的 max-age(建议 ≥ 6 个月)
✅ 使用 always 防止错误页面未返回 HSTS
✅ 确保证书有效,否则会直接无法访问


九、推荐最终配置(标准生产环境)

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

如果你愿意,可以把你的 Nginx 配置文件贴出来,我可以帮你检查是否配置正确、是否有安全风险。

0