nginx安全防护与https部署全过程

发布于:2025-05-14 ⋅ 阅读:(12) ⋅ 点赞:(0)

以下为Nginx安全防护与HTTPS部署的完整实施指南:

一、安全加固配置

  1. 基础防护配置
  • 版本信息隐藏
    在nginx.conf的http模块添加:
server_tokens off;
  • 请求方法过滤
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444;
}
  1. 访问控制策略
# 限制并发连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;

location / {
    limit_conn addr 10;  # 单IP最大10连接
    limit_rate 100k;     # 带宽限速
}
  1. Web应用防护
# 防止SQL注入/XSS攻击
location ~* \.(php|asp|aspx|jsp)$ {
    if ($args ~* "union.*select.*\(") { return 403; }
    if ($args ~* "<script.*>") { return 403; }
}

二、HTTPS部署流程

  1. 证书生成(以Let’s Encrypt为例)
sudo certbot certonly --nginx -d example.com -d www.example.com
  1. 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;
}
  1. HTTP强制跳转
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

三、调优与验证

  1. 安全检测命令
# 检查SSL配置
nmap --script ssl-enum-ciphers -p 443 example.com

# 测试安全头信息
curl -I https://example.com
  1. 自动续期配置
# 添加定时任务
0 3 * * * /usr/bin/certbot renew --quiet

实施后需验证:

  • 全站HTTPS访问是否正常
  • 安全头信息是否生效
  • 漏洞扫描工具检测结果
  • 压力测试是否触发防护策略

注:生产环境建议配合WAF防火墙使用,并定期进行安全审计。证书目录建议设置600权限,敏感配置避免使用明文存储。


网站公告

今日签到

点亮在社区的每一天
去签到