nginx安全配置到位的关键是验证五项:①worker进程非root运行;②server_tokens off隐藏版本;③admin等路径ip白名单;④autoindex off禁目录浏览;⑤日志与tls配置合规。

直接检查 Nginx 安全配置是否到位,关键在于聚焦几个可验证、可操作的核心项,而不是泛泛而谈“加固”。下面按检查逻辑组织,每项都对应明确的命令或配置位置,方便你一条条核对。
检查运行用户权限是否最小化
这是最基础也最容易被忽略的一环。Nginx 工作进程绝不能以 root 身份运行。
- 执行 ps -ef | grep nginx,确认 worker 进程所属用户是 nginx 或 www-data,而非 root
- 检查主配置文件 /etc/nginx/nginx.conf 开头是否有 user nginx nginx;(或类似非 root 用户)
- 执行 id nginx 确认该用户为系统用户(-r 参数创建),且登录 shell 是 /sbin/nologin
- 执行 passwd -S nginx,输出中应含 LK 或 Password locked,表示账号已被锁定,无法登录
检查敏感信息是否隐藏
版本号、后端标识、目录列表等信息泄露,等于给攻击者递上侦察地图。
- 在 http 块中确认存在 server_tokens off; —— 检查响应头是否还带
Server: nginx/1.20.1 - 若有反向代理,检查是否配置了 proxy_hide_header Server; 和 proxy_hide_header X-Powered-By;
- 检查是否关闭了目录浏览:autoindex off;(尤其在
location /或静态资源路径下) - 访问一个不存在的路径(如
/nonexistent),确认返回的 404 页面不显示 Nginx 版本或系统路径信息
检查访问控制与请求限制是否生效
没有边界的访问等于敞开大门,尤其是管理接口和高频请求路径。
- 对后台路径(如
/admin、/phpmyadmin)检查是否配置了 IP 白名单:allow 192.168.1.0/24; + deny all; - 检查是否限制了非法 HTTP 方法:在关键 location 中使用 limit_except GET POST HEAD { deny all; }
- 检查是否启用了速率限制:limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; 并在 location 中调用
- 执行 curl -I http://your-domain.com,确认响应头中包含 Strict-Transport-Security(强制 HTTPS)、X-Frame-Options: DENY(防点击劫持)、X-Content-Type-Options: nosniff
检查日志与 TLS 配置是否合规
等保或实际攻防中,这两项是审计必查项,也是事件溯源与数据保护的底线。
- 确认 access_log 和 error_log 路径可写,且日志格式包含必要字段:$remote_addr $request_method $uri $status $http_user_agent
- 检查 SSL 配置:ssl_protocols TLSv1.2 TLSv1.3;(禁用 TLSv1.0/1.1 和 SSLv3)
- 检查密码套件是否排除弱算法:ssl_ciphers 中不应出现
RC4、MD5、DES、3DES - 用 openssl s_client -connect your-domain.com:443 -tls1_2 或在线工具(如 SSL Labs)验证协议与证书链是否正常











