Nginx为Virtual Host配置SSL证书本质是在server块中启用HTTPS监听并加载证书文件,即设置listen 443 ssl、ssl_certificate与ssl_certificate_key路径,并确保域名解析、443端口放行、证书域名匹配;同时建议添加80端口301跳转HTTPS的server块。
Nginx 中为 Virtual Host 配置 SSL 证书,本质是在对应 server 块中启用 HTTPS 监听并加载证书文件。关键不是“单独配 SSL”,而是让这个虚拟主机支持 https:// 访问——也就是把 HTTP 的 listen 80 扩展成 listen 443 ssl,再补上证书路径和加密参数。
example.com → 1.2.3.4).crt + .key 文件,PEM 格式)server_name 完全一致(如 server_name example.com;,证书也得是 example.com 或通配符 *.example.com)打开你的站点配置文件(例如 /usr/local/nginx/conf/conf.d/example.com.conf 或直接改 nginx.conf 中的 server{}),确保包含以下核心项:
server {listen 443 ssl;server_name example.com www.example.com;# 证书文件路径(务必用绝对路径)ssl_certificate /etc/nginx/ssl/example.com.crt;ssl_certificate_key /etc/nginx/ssl/example.com.key;# 推荐启用的 TLS 安全参数(提升兼容性与安全性)ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;ssl_prefer_server_ciphers off;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;# 其他常规配置(root、location 等)root /var/www/example;index index.html;location / {try_files $uri $uri/ =404;}}
⚠️ 注意:ssl_certificate 是证书链文件(含域名证书 + 中间 CA),不是仅根证书;若你只有 fullchain.pem 和 privkey.pem(如 Let’s Encrypt),就分别填这两个路径。
加一个配套的 server 块,把所有 http:// 请求 301 重定向到 https://:
server {listen 80;server_name example.com www.example.com;return 301 https://$server_name$request_uri;}
这样用户无论输 http://example.com 还是直接敲域名,都会被安全跳转。
nginx -t
nginx -s reload
https://example.com,地址栏显示锁图标且无证书警告,即成功不复杂但容易忽略细节。