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 隐私。
✔ 安全 Cookie
Set-Cookie "Path=/; HttpOnly; Secure; SameSite=Strict";
-
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
我可以帮你直接修改成 可用的完整配置模板。
No Comments