Nginx 核心安全功能落地教程
本教程针对 8 大核心功能(隐藏版本号、限制危险请求方式、CC 攻击防御、防盗链、动态黑名单、HTTPS 配置、SSL 证书、自动重定向 HTTPS),提供从原理到配置步骤的全流程指导,所有操作均基于生产环境标准。
前置准备
1. 环境确认
- 确保 Nginx 版本≥1.20
- 操作系统:CentOS/RHEL 7+/Debian 10+/Ubuntu 20.04+
- 拥有服务器 root 权限或 sudo 权限
- 已准备好域名且 DNS 已解析到服务器 IP
2. 配置文件备份
# 备份 Nginx 主配置文件
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%Y%m%d)
# 备份站点配置目录(如果有)
cp -r /etc/nginx/conf.d /etc/nginx/conf.d.bak.$(date +%Y%m%d)
3. 核心配置文件路径说明
- 主配置文件:
/etc/nginx/nginx.conf - 站点配置目录:
/etc/nginx/conf.d/ - 日志文件路径:
/var/log/nginx/access.log,/var/log/nginx/error.log
一、隐藏 Nginx 版本号
1.1 原理说明
默认情况下,Nginx 会在 HTTP 响应头和错误页面中暴露完整版本号。隐藏版本号是缩小攻击面的第一步。
1.2 配置步骤
在 http 块中添加以下配置:
http {
server_tokens off; # 关闭响应头和错误页面中的版本号显示
fastcgi_param SERVER_SOFTWARE nginx; # 进阶:隐藏 FastCGI/PHP 响应中的服务版本
include /etc/nginx/mime.types;
default_type application/octet-stream;
}
1.3 测试验证
使用 curl 命令查看 HTTP 响应头:
curl -I http://yourdomain.com
预期结果:响应头中 Server 字段仅显示 nginx,无版本号。
二、限制危险 HTTP 请求方式
2.1 原理说明
HTTP/1.1 协议定义了 8 种请求方法,其中 PUT、DELETE、TRACE、OPTIONS、CONNECT 等方法属于危险方法。限制仅允许业务必需的请求方法,可大幅降低攻击面。
2.2 配置步骤
在站点的 server 块中添加配置:
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# 仅允许 GET、POST、HEAD 三种方法,其他全部返回 405
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 405;
}
}


