Windows下Nginx配置HTTPS需使用PEM格式证书(fullchain.pem和未加密privkey.pem),配置listen 443 ssl及ssl_certificate等指令,添加HTTP重定向与安全参数,并通过nginx -t验证、防火墙放行443端口后启动。

在 Windows 下为 Nginx 配置 HTTPS,核心是正确加载 SSL 证书文件并启用 HTTPS 监听。整个过程不依赖 IIS 或第三方服务,纯 Nginx 原生支持,关键是路径、格式和配置项三者匹配。
准备正确的证书文件
Windows 版 Nginx 要求证书为 PEM 格式(文本型),常见组合是:
- fullchain.pem:包含域名证书 + 中间证书(推荐合并成一个文件,避免链路断裂)
-
privkey.pem:私钥文件,必须未加密(即无密码保护),否则 Nginx 启动会卡住或报错
SSL_CTX_use_PrivateKey_file failed
若你只有 PFX(.pfx/.p12)文件,可用 OpenSSL 转换:openssl pkcs12 -in yourdomain.pfx -clcerts -nokeys -out fullchain.pemopenssl pkcs12 -in yourdomain.pfx -nocerts -nodes -out privkey.pem
转换后检查 privkey.pem 开头是否为 -----BEGIN RSA PRIVATE KEY----- 或 -----BEGIN PRIVATE KEY-----,确保无密码提示行。
Nginx 配置 HTTPS server 块
编辑 conf/nginx.conf 或独立站点配置(如 conf/conf.d/your-site.conf),添加或修改 server 块:
- 监听 443 端口并启用 SSL:
listen 443 ssl; - 指定证书路径(使用正斜杠 / 或双反斜杠 \,避免单反斜杠转义问题):
ssl_certificate "C:/nginx/cert/fullchain.pem";ssl_certificate_key "C:/nginx/cert/privkey.pem"; - 补充基础安全参数(防止老协议/弱加密):
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;
建议同时配置 HTTP 重定向(301)到 HTTPS:server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; }
验证与启动注意事项
配置完成后务必验证语法再重启:
- 以管理员身份打开命令行,进入 Nginx 目录,执行:
nginx.exe -t—— 若提示success才可继续 - 若报错
cannot load certificate,检查路径是否存在、权限是否允许 Nginx 进程读取(尤其在非系统盘或用户目录下) - Windows 防火墙默认阻止 443 端口,需手动放行:
控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则 → 端口 → TCP 443 - 首次启动后,用浏览器访问
https://localhost或你的域名,查看地址栏锁图标是否生效;也可用curl -I https://localhost --insecure快速确认响应头含200 OK
常见问题快速定位
遇到 HTTPS 不生效,按顺序排查:
- Nginx 是否真正监听了 443?运行
netstat -ano | findstr :443,确认 PID 对应 nginx.exe - 证书路径是否写错?Windows 下路径区分大小写不敏感,但空格、中文、隐藏字符易引发静默失败 —— 建议路径全英文、无空格
- 私钥是否被加密?用记事本打开 privkey.pem,若第二行含
Proc-Type: 4,ENCRYPTED,说明有密码,需用openssl rsa -in privkey.pem -out privkey_unencrypted.pem解密 - 浏览器缓存 301 重定向?测试时用隐身窗口,或临时把 80 端口重定向注释掉单独测 443

















