nginx https配置需在server块中直接设置ssl证书、密钥、协议及加密套件,路径须绝对且权限合理(私钥600),监听443端口并启用tlsv1.2/tlsv1.3,推荐pfs加密套件与ocsp stapling。

直接在 server 块中配置 SSL 证书、密钥和协议版本即可,不需要额外模块(只要 Nginx 编译时启用了 http_ssl_module)。关键是路径正确、权限合理、协议与加密套件现代且兼容。
证书与私钥路径必须准确指定
使用 ssl_certificate 和 ssl_certificate_key 指向 PEM 格式文件(常见后缀为 .pem 或 .crt + .key):
-
ssl_certificate指向服务器证书(含公钥,可能还包含中间证书链) -
ssl_certificate_key指向对应私钥文件,不能带密码(若生成时加了密码,需先用openssl rsa -in server.key -out server_decrypted.key去密) - 路径建议用绝对路径,例如
/etc/nginx/ssl/example.com.pem和/etc/nginx/ssl/example.com.key - Nginx 主进程需有读取权限(私钥文件建议
600,目录700)
监听端口和协议版本要明确启用 TLS
HTTPS 必须监听 443 端口并显式声明 ssl:
-
listen 443 ssl;是必需写法(ssl on;已弃用) -
ssl_protocols推荐只保留安全版本:TLSv1.2 TLSv1.3(禁用 TLSv1.0、TLSv1.1 和所有 SSL 版本) - 如需兼容极老客户端(不推荐),可酌情加入
TLSv1.1,但应避免SSLv3或更低
加密套件与会话参数增强安全性
仅设对协议不够,还需控制加密算法和连接复用行为:
-
ssl_ciphers应优先选用前向保密(PFS)强的组合,例如: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 4h;提升 TLS 握手效率 - 可选但推荐:
ssl_early_data on;(配合 TLS 1.3)和ssl_stapling on;+ssl_trusted_certificate启用 OCSP Stapling
完整最小可用 HTTPS server 块示例
以下配置已适配当前主流安全要求(2026 年):
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
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 4h;
ssl_early_data on;
location / {
root /var/www/html;
index index.html;
}
}











