Nginx 安全加固清单与实践
一 基础安全配置
http { server_tokens off; }
server {
location / {
limit_except GET POST HEAD { deny all; }
}
}
location /admin/ {
allow 192.168.1.0/24;
deny all;
}
location ~ /\.(log|conf)$ { deny all; }
location /logs/ { autoindex off; }
二 传输层与加密配置
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/nginx/cert/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/privkey.pem;
ssl_trusted_certificate /etc/nginx/cert/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH;
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / { proxy_pass http://backend; }
}
以上配置兼顾安全与性能,显著降低 MITM 与降级攻击风险。三 抗 DoS/DDoS 与资源控制
http {
# 速率限制:每 IP 10 r/s,突发 20,超出立即拒绝(503)
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
limit_req zone=req_limit burst=20 nodelay;
# 并发连接限制:每 IP 10 个连接
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
# 动态黑名单
geo $block_ip {
default 0;
include /usr/local/nginx/conf/blockips.conf;
}
server {
if ($block_ip) { return 403; }
}
}
以上策略可有效缓解 CC 攻击、连接耗尽与扫描探测等常见威胁。四 应用层与运维安全
location ~* \.(jpg|gif|png)$ {
valid_referers none blocked your-domain.com *.your-domain.com;
if ($invalid_referer) { return 403; }
}
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'";
五 部署与验证