2026.05.22 | youres | 18次围观
为什么需要Nginx安全检查清单
Nginx作为全球使用最广泛的Web服务器之一,承载着无数网站和应用的流量。但很多运维人员在部署时只关注性能优化,忽略了安全配置,导致服务器暴露在风险之中。本文整理了一份完整的Nginx安全配置检查清单,帮你系统性地排查和加固服务器。
一、基础安全配置检查
1. 隐藏版本号信息
默认情况下,Nginx会在响应头和错误页面显示版本号(如nginx/1.18.0),攻击者可以根据版本号查找已知漏洞进行定向攻击。
http {
server_tokens off;
}
配置后响应头只显示Server: nginx,不再暴露具体版本。
2. 限制HTTP请求方法
禁用不必要的HTTP方法,只保留GET、HEAD、POST,防止PUT、DELETE等方法被恶意利用。
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
3. 配置安全响应头
添加安全相关的HTTP响应头,有效防御常见Web攻击:
# 防止点击劫持
add_header X-Frame-Options "SAMEORIGIN" always;
# 防止MIME类型混淆攻击
add_header X-Content-Type-Options "nosniff" always;
# 启用XSS过滤器
add_header X-XSS-Protection "1; mode=block" always;
# 禁止引用策略泄露
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
二、SSL/TLS安全配置
4. 强制HTTPS跳转
确保全站使用HTTPS,防止明文传输导致数据泄露:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
5. 优化SSL配置
使用安全的协议版本和加密套件:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
6. 启用HSTS
HTTP严格传输安全头,防止SSL剥离攻击:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
三、访问控制与限流
7. 配置请求限流
防止恶意请求耗尽服务器资源:
# 定义限流区域
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# 应用限流
location / {
limit_req zone=one burst=20 nodelay;
}
8. 连接数限制
限制单个IP的并发连接数:
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
limit_conn addr 10;
}
四、文件上传安全
9. 限制上传文件大小
防止大文件上传耗尽服务器资源:
client_max_body_size 10m;
10. 禁止执行上传目录脚本
防止上传恶意脚本执行:
location /uploads/ {
location ~* \.(php|jsp|asp|aspx)$ {
deny all;
}
}
五、日志与监控配置
配置访问日志
确保每个站点都启用访问日志,便于安全审计:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
六、系统级安全加固
- 最小权限运行:使用非root用户运行Nginx
- 定期更新:及时升级到最新稳定版本
- 配置备份:修改前备份配置文件
- 语法检查:修改后执行
nginx -t验证
完整检查清单速查表
| 检查项 | 配置指令 | 安全作用 |
|---|---|---|
| 隐藏版本号 | server_tokens off | 防止信息泄露 |
| 限制请求方法 | if条件判断 | 防止恶意方法调用 |
| X-Frame-Options | add_header配置 | 防止点击劫持 |
| 强制HTTPS | return 301跳转 | 防止明文传输 |
| SSL协议版本 | ssl_protocols | 禁用不安全协议 |
| HSTS头 | Strict-Transport-Security | 防止SSL剥离 |
| 请求限流 | limit_req_zone | 防止资源耗尽 |
| 连接限制 | limit_conn | 防止连接耗尽 |
| 文件大小限制 | client_max_body_size | 防止大文件攻击 |
| 脚本执行禁止 | deny all | 防止恶意脚本执行 |
总结
Nginx安全配置不是一次性工作,而是需要定期检查和更新的持续过程。建议将这份检查清单纳入日常运维流程,每次部署新站点时逐项核对。安全无小事,多一道防线就少一分风险。
相关文章推荐
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论