0

Nginx配置安全检查清单:10个关键项让你的服务器固若金汤

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-Optionsadd_header配置防止点击劫持
强制HTTPSreturn 301跳转防止明文传输
SSL协议版本ssl_protocols禁用不安全协议
HSTS头Strict-Transport-Security防止SSL剥离
请求限流limit_req_zone防止资源耗尽
连接限制limit_conn防止连接耗尽
文件大小限制client_max_body_size防止大文件攻击
脚本执行禁止deny all防止恶意脚本执行

总结

Nginx安全配置不是一次性工作,而是需要定期检查和更新的持续过程。建议将这份检查清单纳入日常运维流程,每次部署新站点时逐项核对。安全无小事,多一道防线就少一分风险。

相关文章推荐

版权声明

本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论