nginx配置文件的server代码块的安全增强配置与说明
时间:2025-3-24 10:10 作者:Anglei 分类: WEB应用
安全增强说明:
- HSTS强制:通过Strict-Transport-Security头部强制浏览器使用HTTPS,消除SSL剥离攻击可能
- OCSP Stapling:提升证书吊销状态查询效率,同时保护用户隐私
- CSP策略:限制资源加载来源,有效防御XSS攻击
- 真实IP处理:通过set_real_ip_from限制可信代理,防止IP伪造
- 协议限制:禁用TLS1.2以下协议,消除已知漏洞(如POODLE)
- 加密套件优化:优先选择支持前向保密(ECDHE)和现代加密算法(AES-GCM/ChaCha20)的套件
# 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

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(1) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |