Skip to main content

Nginx ssl强化安全配置

下面详细解释你给出的 Nginx 配置的作用,以及 应该放在哪个配置段才能生效


✅ 一、这些配置的作用

1. SSL 安全相关

ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
resolver 119.29.29.29 182.254.116.116 valid=300s;
resolver_timeout 5s;

ssl_stapling on

开启 OCSP Stapling,减少浏览器验证证书的延迟,加速 HTTPS。

ssl_stapling_verify on

验证 OCSP 响应的有效性,更安全。

ssl_session_cache shared:SSL:10m

创建 10MB 的共享会话缓存,减少 SSL 握手次数,提高性能。

ssl_session_timeout 10m

SSL 会话缓存保留 10 分钟。

✔ DNS 解析器(给 OCSP 用)

resolver 119.29.29.29 182.254.116.116 valid=300s;
resolver_timeout 5s;

用于 OCSP Stapling 查询证书状态,需要公网 DNS 才能解析 OCSP 服务器。


2. HTTP 安全头部(安全增强)

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Set-Cookie "Path=/; HttpOnly; Secure; SameSite=Strict";

✔ HSTS(强制 HTTPS)

Strict-Transport-Security

告诉浏览器:之后访问本站全部强制走 HTTPS,并包含子域名。

✔ 禁止 iframe 跨站嵌入

X-Frame-Options SAMEORIGIN

防止 Clickjacking 攻击。

✔ 禁止 MIME 嗅探

X-Content-Type-Options nosniff

✔ 同源跳转策略

Referrer-Policy strict-origin-when-cross-origin

保护 referrer 隐私。

  • HttpOnly:JavaScript 不能读取

  • Secure:只在 HTTPS 传输

  • SameSite=Strict:禁止跨站请求带 cookie(防止 CSRF)


✅ 二、这些配置 应该放在哪里才能生效?

确切位置: 放在 server{} 块内部(监听 HTTPS 的 server 块)

比如:

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

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # 把你的配置加在这里
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    resolver 119.29.29.29 182.254.116.116 valid=300s;
    resolver_timeout 5s;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin";
    add_header Set-Cookie "Path=/; HttpOnly; Secure; SameSite=Strict";

    root /var/www/html;
}

⚠ 注意事项

1. add_header 必须在 HTTPS 的 server {} 中

否则可能不会生效。

2. 如果你想全站所有 location 都生效

请放在 server{} 块的顶部,而不是 location{} 里面

3. 对 HTTP(80) 的 server 没有必要加以上安全头

因为:

  • HSTS 需要 HTTPS 才有效

  • cookie 的 Secure 也只能 HTTPS

  • OCSP Stapling 也是 HTTPS 证书相关


🎯 简要总结

配置类型 建议位置
SSL OCSP / session 缓存 server { listen 443 ssl; }
HTTP 安全头(add_header) 同样在 HTTPS server{} 块内部
resolver 也放 server{}

如果你给我你的 Nginx 文件路径,比如:

/etc/nginx/sites-available/xxx.conf

我可以帮你直接修改成 可用的完整配置模板