«

nginx配置文件的server代码块的安全增强配置与说明

时间:2025-3-24 10:10     作者:Anglei     分类: WEB应用


安全增强说明:

# HTTP重定向到HTTPS服务器块
server {
    listen 80;                                 # 监听IPv4的80端口(HTTP)
    server_name xxxxx.maxada.cn;               # 匹配请求的域名
    return 301 https://$host$request_uri;      # 永久重定向所有HTTP请求到HTTPS
    # 安全增强:强制客户端使用加密连接,避免SSL剥离攻击
}

# HTTPS主服务器块
server {
    listen 443 ssl http2;                      # 监听IPv4的443端口(HTTPS),启用SSL/TLS和HTTP/2
    server_name xxxxx.maxada.cn;               # 匹配请求的域名

    # SSL证书配置(确保文件权限为600)
    ssl_certificate /etc/nginx/ssl/xxxxxx.pem; # 主证书文件路径(包含证书链)
    ssl_certificate_key /etc/nginx/ssl/xxxxxx.key; # 私钥文件路径(权限严格限制)

    # SSL协议与加密套件优化
    ssl_protocols TLSv1.2 TLSv1.3;             # 仅允许TLS 1.2+协议(禁用SSLv2/SSLv3/TLS1.0/TLS1.1)
    ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384"; 
    # 使用现代加密套件,优先支持前向保密(ECDHE)和高效算法(AES-GCM/ChaCha20)
    ssl_prefer_server_ciphers on;              # 优先使用服务器定义的加密套件而非客户端
    ssl_ecdh_curve X25519:secp384r1;           # 使用高效椭圆曲线算法(增强前向保密性能)

    # SSL会话缓存与性能优化
    ssl_session_cache shared:SSL:10m;          # 创建10MB共享会话缓存,减少重复握手开销
    ssl_session_timeout 1d;                    # 会话缓存有效期1天(平衡内存与性能)
    ssl_session_tickets on;                    # 启用TLS会话票据(TLS1.3特性)
    ssl_session_ticket_key /etc/nginx/ssl/xxxxxx_session_ticket.key; # 会话票据密钥路径

    # OCSP Stapling配置(需配置信任证书链)
    ssl_stapling on;                           # 启用OCSP Stapling验证证书吊销状态
    ssl_stapling_verify on;                    # 强制验证OCSP响应有效性
    ssl_trusted_certificate /etc/nginx/ssl/chain.pem; # 包含中间证书链的信任证书文件

    # 安全头部配置
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; 
    # HSTS策略:强制1年HTTPS,包含子域名,预加载到浏览器HSTS列表
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted.cdn.com"; 
    # CSP策略示例:限制资源加载来源,按需调整
    add_header X-Content-Type-Options "nosniff" always; # 禁止MIME类型嗅探
    add_header X-Frame-Options "SAMEORIGIN" always;     # 防止点击劫持攻击
    add_header X-XSS-Protection "1; mode=block" always;# 启用XSS过滤(现代浏览器已内置,保留兼容)

    # 代理配置与安全增强
    location / {
        proxy_pass http://localhost:8888;      # 反向代理到后端服务
        proxy_http_version 1.1;                # 使用HTTP/1.1支持持久连接
        proxy_set_header Host $host;           # 传递原始Host头给后端
        proxy_set_header X-Real-IP $remote_addr; # 传递客户端真实IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 追加代理链IP
        proxy_set_header X-Forwarded-Proto $scheme; # 传递原始协议(http/https)

        # 安全增强:限制可信代理IP段(按需修改)
        set_real_ip_from 192.168.1.0/24;       # 示例可信代理IP段
        real_ip_header X-Forwarded-For;        # 从指定头部获取真实IP
        real_ip_recursive on;                  # 递归解析X-Forwarded-For链
    }

    # 访问控制与安全加固
    if ($request_method !~ ^(GET|POST|HEAD)$ ) { 
        return 405;                            # 禁用非常用HTTP方法(PUT/DELETE等)
    }
    client_max_body_size 10m;                  # 限制上传文件大小防止DoS
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; # 请求频率限制(示例)
}

票据密钥生成方法:

# 使用 OpenSSL 生成 48 字节的随机密钥
sudo openssl rand 48 > /etc/nginx/ssl/xxxxxx_session_ticket.key
# 设置权限(确保 Nginx 有读取权限)
sudo chmod 600 /etc/nginx/ssl/xxxxxx_session_ticket.key

本文完结,相关标签: nginx 安全 server块

 版权所有:Anglei
 文章标题:nginx配置文件的server代码块的安全增强配置与说明
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(1)

鲜花(0)

鸡蛋(0)
分享到: