# 安全防护与访问控制

URL: https://caijiao.org/nginx/security
Source: docs/nginx/security.md
Description: 本节介绍 Nginx 的安全防护与访问控制方法，包括访问限制、防止常见攻击、限制请求大小、IP 黑白名单和防护最佳实践。

Nginx 提供丰富的安全防护和访问控制功能，可有效防止非法访问和常见网络攻击。

## 一、目录与文件访问控制

禁止访问敏感文件或目录：

```nginx
location ~ /\.ht {
    deny all;
}

location /config/ {
    deny all;
}
````

## 二、IP 黑白名单

允许或拒绝特定 IP 访问：

```nginx
location /admin/ {
    allow 192.168.1.0/24;
    deny all;
}
```

* **allow**：允许访问的 IP
* **deny**：禁止访问的 IP

## 三、限制请求大小

防止大文件上传或恶意请求：

```nginx
client_max_body_size 10M;
```

* 超过限制的请求将返回 413 状态码

## 四、防护常见攻击

### 1. 防止 CC 攻击

通过限制连接数：

```nginx
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
```

### 2. 防止请求速率过高

```nginx
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;
limit_req zone=req_limit burst=10 nodelay;
```

* **limit_req_zone**：定义速率限制
* **limit_req**：应用限制，burst 控制瞬时请求突发量

### 3. 防止 HTTP 方法滥用

```nginx
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
    return 405;
}
```

## 五、安全优化建议

1. 定期检查 Nginx 配置文件，关闭不必要模块
2. 使用 HTTPS 加密传输，提高数据安全
3. 配合防火墙、WAF、Fail2Ban 等增强安全防护
4. 定期更新 Nginx 版本，修复已知漏洞

---

通过配置安全防护与访问控制，Nginx 可以有效防止非法访问和网络攻击，保障 Web 服务安全稳定运行。
