作为一款高性能的Web服务器和反向代理服务器,Nginx的安全性至关重要。以下是一些关键的安全防护策略与技巧:
保持Nginx更新
最小化安装原则
权限控制
user nginx;
worker_processes auto;
pid /run/nginx.pid;
禁用服务器令牌
server_tokens off;
限制HTTP方法
limit_except GET POST {
deny all;
}
IP访问控制
location /admin {
allow 192.168.1.0/24;
deny all;
}
速率限制
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=5;
}
}
强制HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
安全协议和加密套件
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
ssl_prefer_server_ciphers on;
启用HSTS
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
防止点击劫持
add_header X-Frame-Options "SAMEORIGIN";
XSS防护
add_header X-XSS-Protection "1; mode=block";
内容安全策略(CSP)
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'";
防止MIME类型混淆
add_header X-Content-Type-Options "nosniff";
详细日志记录
log_format security '$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/security.log security;
错误日志监控
error_log /var/log/nginx/error.log warn;
Web应用防火墙(WAF)
防止DDoS攻击
limit_conn_zone $binary_remote_addr zone=addr:10m;
location / {
limit_conn addr 10;
}
隐藏敏感信息
location ~ /\.git {
deny all;
}
请求大小限制
client_max_body_size 10m;
bash
nginx -t
通过实施这些安全策略,您可以显著提高Nginx服务器的安全性,降低被攻击的风险。根据您的具体应用场景,可能需要调整或添加额外的安全措施。