# 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";

```

让 cookie 更安全：

- `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 证书相关

---

# 🎯 简要总结

<table id="bkmrk-%E9%85%8D%E7%BD%AE%E7%B1%BB%E5%9E%8B-%E5%BB%BA%E8%AE%AE%E4%BD%8D%E7%BD%AE-ssl-ocsp-%2F"><thead><tr><th>配置类型</th><th>建议位置</th></tr></thead><tbody><tr><td>SSL OCSP / session 缓存</td><td>`server { listen 443 ssl; }`</td></tr><tr><td>HTTP 安全头（add\_header）</td><td>同样在 HTTPS server{} 块内部</td></tr><tr><td>resolver</td><td>也放 server{}</td></tr></tbody></table>

---

如果你给我你的 Nginx 文件路径，比如：

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

```

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