Nginx 安全防护与 HTTPS 部署实战文档

Nginx 安全防护与 HTTPS 部署实战文档


一、环境准备

  • 服务器:Linux(CentOS 7+/Ubuntu 18+)
  • Nginx:1.18+
  • 域名已备案并解析到服务器
  • 开放端口:80、443

二、HTTPS 证书获取

1. 安装 Certbot

bash

运行

复制代码
# CentOS
yum install -y certbot certbot-nginx

# Ubuntu
apt install -y certbot python3-certbot-nginx

2. 一键申请证书

bash

运行

复制代码
certbot --nginx -d yourdomain.com -d www.yourdomain.com

按提示操作,自动生成 HTTPS 配置。

证书路径(默认):

plaintext

复制代码
/etc/letsencrypt/live/yourdomain.com/
├── fullchain.pem
└── privkey.pem

3. 证书自动续期

bash

运行

复制代码
echo "0 3 * * * certbot renew --quiet" >> /etc/crontab

三、HTTPS 最优配置(直接写入 Nginx 站点)

nginx

复制代码
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    # 强制跳转 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    # SSL 证书
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    # SSL 安全协议
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers on;

    # 会话优化
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # 安全头部
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Frame-Options SAMEORIGIN;

    root /var/www/html;
    index index.html;
}

四、Nginx 安全防护实战

1. 隐藏 Nginx 版本号

nginx

复制代码
http {
    server_tokens off;
}

2. 防 SQL 注入、XSS、目录遍历

nginx

复制代码
location / {
    if ($query_string ~* "union|select|insert|delete|update|drop|script|<|>") {
        return 403;
    }
    if ($request_uri ~* "\.\.\/") {
        return 403;
    }
}

3. 限制请求频率(防 CC 攻击)

nginx

复制代码
http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}

server {
    location / {
        limit_req zone=one burst=20 nodelay;
    }
}

4. 禁止恶意 UA / 爬虫

nginx

复制代码
if ($http_user_agent ~* "scrapy|curl|wget|python|bot|spider") {
    return 403;
}

5. 禁止访问敏感文件

nginx

复制代码
location ~ /\.ht { deny all; }
location ~ /\.git { deny all; }
location ~ /\.env { deny all; }
location ~ /config\.php { deny all; }

6. 限制上传大小

nginx

复制代码
client_max_body_size 10m;
client_body_timeout 60;

五、配置检查与重启

bash

运行

复制代码
nginx -t
systemctl restart nginx

六、安全检测

可通过以下工具验证:

bash

运行

复制代码
curl -I https://yourdomain.com

七、生产安全总结

  1. 必须开启 HTTPS + HSTS
  2. 隐藏版本、限制请求、过滤恶意参数
  3. 禁止敏感路径、恶意 UA、目录穿越
  4. 证书自动续期,避免过期故障
  5. 开启 HTTP/2 提升性能
相关推荐
沫璃染墨17 小时前
《Qt从零入门系列(十五):Qt线程安全与锁机制详解——从QMutex到RAII与读写锁实战》
开发语言·c++·qt·安全·交互·线程·qt6.3
Lyra_Infra17 小时前
prod-bus 主机 CPU 异常故障排查与安全事件分析报告
后端·安全
姜鱼问生18 小时前
网页一片白?Docker 跑 Nginx 读不到文件,403 Forbidden 排查实录
nginx·docker·容器
武天旭19 小时前
AI安全--AI大模型的数据投毒攻击污染
人工智能·安全
jimmyleeee19 小时前
Agent安全之二:Tool Misuse & Exploitation(ASI02)----当合法工具被用来做错事
人工智能·安全
林伽一19 小时前
训练断网、部署上门槛:AI 基础设施的两道新闸门|2026年10月25日
人工智能·科技·安全·ai·1024程序员节
长不大的杨瑞杰21 小时前
OpenCode v2 团队治理实战:多仓库 Policy、灰度发布与故障回滚
运维·人工智能·安全·软件工程·devops
loulanyue_21 小时前
当AI学会自主攻击与渗透破壁:Agent行为链失控与Mythos级攻防颠覆下的安全范式重构——读CNCC2026第六届网络生态治理论坛实录
网络·人工智能·安全
进击的丸子21 小时前
代理网络环境下 Linux Pro 在线激活实操指南
javascript·后端·安全
xiejava101821 小时前
【一个人的SOC】(12) AI 安全报告与主动推送——五种场景的自动化闭环
人工智能·安全·自动化·开源软件·安全运营·ai soc