ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全的旧版本协议
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_ecdh_curve secp384r1; # 使用更强的椭圆曲线
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # 禁用会话票证以防止重放攻击
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# 限制SSL/TLS握手速率
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 5m;
# 限制连接速率
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 10;
# 限制请求速率
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;
limit_req zone=req_limit_per_ip burst=20 nodelay;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
ssl_dhparam /etc/nginx/ssl/dhparam.pem; # 生成强DH参数: openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
# 记录SSL握手信息
log_format ssl_log '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$ssl_protocol/$ssl_cipher '
'$ssl_client_verify/$ssl_client_s_dn';
access_log /var/log/nginx/ssl_access.log ssl_log;
通过以上配置和措施,可以显著提高Nginx反向代理环境下的HTTPS安全性,防范大多数常见的HTTPS相关攻击。