nginx启用https需同时满足四项前提:ssl模块已编译(nginx -v | grep with-http_ssl_module确认)、证书路径正确、私钥权限合规(chmod 600)、配置含listen 443 ssl及对应ssl_certificate和ssl_certificate_key指令,缺一即导致启动失败或静默降级。

只要Nginx已启用SSL模块、证书路径正确、权限合规、配置写全,HTTPS就能跑起来。缺一不可,错一个就可能静默降级或启动失败。
确认Nginx支持SSL模块
Nginx默认安装包(如Ubuntu的nginx-full)通常自带SSL模块,但精简版或自编译版本可能缺失。不能只看nginx -t是否通过——它不检查模块是否存在。
- 运行
nginx -V 2>&1 | grep -o with-http_ssl_module,有输出才表示模块已启用 - 若无输出,Ubuntu/Debian建议重装:
sudo apt install --reinstall nginx-full - CentOS/RHEL可安装
nginx-mod-http-ssl扩展包,或重新编译源码(不推荐新手手动编译)
准备并放置证书文件
证书必须是PEM格式,且使用绝对路径;私钥必须严格保密,否则等于裸奔。
- Let’s Encrypt用户:用
fullchain.pem(不是cert.pem),它包含域名证书+中间证书,避免iOS等设备握手失败 - 推荐存放路径:
/etc/nginx/ssl/example.com.crt和/etc/nginx/ssl/example.com.key - 设置权限:
sudo chmod 600 /etc/nginx/ssl/*.key,sudo chmod 644 /etc/nginx/ssl/*.crt - 验证格式:
file /etc/nginx/ssl/example.com.crt应显示“PEM certificate”;openssl x509 -in /etc/nginx/ssl/example.com.crt -text -noout | head -3可快速查看证书信息
配置HTTPS server块(443端口)
这是核心配置,三要素必须同时出现:监听443+ssl、证书路径、私钥路径。少一个,Nginx不会报错,但HTTPS请求会被拒绝或跳转到其他server块。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 在
/etc/nginx/sites-available/your-site或conf.d/下新建配置文件 - 写入最小可行配置:
server {<br> listen 443 ssl;<br> server_name example.com;<br> ssl_certificate /etc/nginx/ssl/example.com.crt;<br> ssl_certificate_key /etc/nginx/ssl/example.com.key;<br> ssl_protocols TLSv1.2 TLSv1.3;<br> ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';<br> root /var/www/html;<br> index index.html;<br> location / { try_files $uri $uri/ =404; }<br>}
- 不建议直接改
nginx.conf主文件,用独立站点配置更清晰、易维护
强制HTTP跳转HTTPS(80端口重定向)
这个server块必须单独存在,不能和443配置混在一个块里。目的是让所有明文请求自动升级为加密连接。
- 在同一配置文件中另起一个server块:
server {<br> listen 80;<br> server_name example.com;<br> return 301 https://$host$request_uri;<br>}
- 如果站点还支持www子域,
server_name可写成example.com www.example.com - 测试配置:
sudo nginx -t→ 无报错再执行sudo systemctl reload nginx










