以下为Nginx安全防护与HTTPS部署的完整实施指南:
一、安全加固配置
- 基础防护配置
- 版本信息隐藏
在nginx.conf的http模块添加:
server_tokens off;
- 请求方法过滤
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
- 访问控制策略
# 限制并发连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;
location / {
limit_conn addr 10; # 单IP最大10连接
limit_rate 100k; # 带宽限速
}
- Web应用防护
# 防止SQL注入/XSS攻击
location ~* \.(php|asp|aspx|jsp)$ {
if ($args ~* "union.*select.*\(") { return 403; }
if ($args ~* "<script.*>") { return 403; }
}
二、HTTPS部署流程
- 证书生成(以Let’s Encrypt为例)
sudo certbot certonly --nginx -d example.com -d www.example.com
- SSL配置模板
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# HSTS增强安全
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
- HTTP强制跳转
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
三、调优与验证
- 安全检测命令
# 检查SSL配置
nmap --script ssl-enum-ciphers -p 443 example.com
# 测试安全头信息
curl -I https://example.com
- 自动续期配置
# 添加定时任务
0 3 * * * /usr/bin/certbot renew --quiet
实施后需验证:
- 全站HTTPS访问是否正常
- 安全头信息是否生效
- 漏洞扫描工具检测结果
- 压力测试是否触发防护策略
注:生产环境建议配合WAF防火墙使用,并定期进行安全审计。证书目录建议设置600权限,敏感配置避免使用明文存储。