Nginx服务器部署SSL证书后网站无法访问怎么办?

更新时间:2023-11-09 来源:TopSSL 作者:TopSSL

本文为您快速解答 Nginx 配置 SSL 及部署 HTTPS 过程中最常见的 5 大硬核痛点,包括浏览器提示不安全、网站打不开、HTTP 如何 301 自动跳转 HTTPS、新证书更新不生效以及免费证书支持等问题的极简排查与解决方法。

Nginx部署SSL证书后无法访问怎么办?

在 Nginx 服务器配置 SSL 证书并上线 HTTPS 时,经常会遇到网站打不开、443 端口无法连接、或者浏览器弹窗提示“连接不安全”等情况。如果网站还没有完成 HTTPS 改造,可以先了解 HTTP 切换 HTTPS 的完整流程,再进行 Nginx 证书部署。

针对部署后引发的访问异常,原因一般集中在安全组端口未开启、证书链遗漏、配置路径错误以及 Nginx 服务未彻底重载这几类环节。


Nginx 配置 SSL 证书的标准规范

在排查故障之前,建议先核对 Nginx 配置文件中的核心 SSL 指令是否标准。

正常的 nginx.conf 或站点虚拟主机配置文件结构如下:

Nginx

server {
    listen 443 ssl;
    server_name www.yourdomain.com;

    # 证书公钥与私钥路径
    ssl_certificate      /etc/nginx/cert/fullchain.pem; # 包含中间证书的完整链
    ssl_certificate_key  /etc/nginx/cert/yourdomain.key;

    # SSL 协议与加密套件优化
    ssl_session_timeout  10m;
    ssl_session_cache    shared:SSL:10m;
    ssl_protocols        TLSv1.2 TLSv1.3; # 不建议开启 TLS 1.0/1.1,已被主流浏览器与规范淘汰
    ssl_prefer_server_ciphers on;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

# HTTP 强制跳转 HTTPS
server {
    listen 80;
    server_name www.yourdomain.com;
    return 301 https://$host$request_uri;
}

修改配置文件后,务必先在控制台执行测试命令:

Bash

nginx -t

只有当终端返回 syntax is oktest is successful 时,才能进行平滑重载。关于完整部署与密钥生成步骤,可以查看 SSL 证书安装与部署 指引。

443 端口与进程监听诊断

很多时候,配置文件语法完全正确,但网站依然连不上,这时首先需要排查 443 端口的实际监听状态。

1. 检查 Nginx 是否正确监听 443 端口

在服务器终端执行以下命令,确认 Nginx 进程是否成功绑定了 443 端口:

Bash

# 使用 netstat 命令检查
netstat -ntlp | grep 443

# 或使用 ss 命令检查
ss -lntp | grep 443

如果输出结果中没有 nginx 进程,说明配置未被正确加载,或者 Nginx 未处于运行状态。

2. 云服务器安全组与系统防火墙排查

如果 ssnetstat 显示 443 端口正常监听,但公网依旧无法连接:

  • ​云平台控制台:检查阿里云、腾讯云、华为云等后台的“安全组规则”,确认已添加允许 443 端口(HTTPS)入站流量的规则。
  • ​系统本地防火墙:若开启了 firewalldiptables,需执行命令开放端口

Nginx 部署 SSL 后的常见排障场景

在实际部署过程中,Nginx 配置 SSL 证书 后引发的报错主要有以下几种:

1. 只上传了站点公钥,遗漏了中间证书链

如果只配置了单个站点证书,可能出现部分浏览器或移动设备提示“证书不受信任”的情况。

解决方法​:需要将 CA 机构提供的站点证书与中间证书(Intermediate CA)拼接为一个完整的 fullchain.pem 文件后再进行加载。关于多端兼容排障可以参考 HTTPS 访问异常排查

2. 修改配置后未正确重载或 Nginx 进程残留

很多管理员在保存 nginx.conf 后仅运行了 nginx -s reload,但在多进程残余或配置语法有潜伏错误的情况下,Nginx 并没有真正加载新证书。

解决方法:

  • 先执行 nginx -t 检查语法。
  • 若刷新仍无效,可彻底关闭并重启服务:

3. 开启 CDN 或反向代理后未同步更新源站

如果站点前置了 CDN 加速(如 Cloudflare、百度云加速等)或高防 IP,需要在 CDN 控制台同步上传新的证书。如果仅仅更新了源站 Nginx 的证书,CDN 节点依然会向用户返回过期的旧证书,导致浏览器继续报错。

4. 混合内容(Mixed Content)导致“不安全”警告

如果访问 HTTPS 站点能打开,但地址栏的小锁图标带黄号或提示“不安全”,一般是页面内硬编码引入了 http:// 静态资源(图片、JS、CSS 等)。需要将源码中的链接统一替换为相对路径或 https:// 协议。


常见异常原因对比与处理

部署完成后,可以通过下表对应的方法进行逐一验证:

异常现象可能的原因​解决路径
连接超时 / 无法打开网页安全组 443 端口未放行 / 防火墙拦截开放云服务器安全组与系统防火墙 443 端口
浏览器提示“证书域名不匹配”配置中的域名与证书绑定的 SAN/CN 不一致检查server_name与证书绑定的域名范围
部分设备报“不信任/链断裂”缺少中间证书,证书链拼接不完整重新拼接中间证书,生成包含完整链的补丁文件
更新了证书但浏览器显示旧过期时间Nginx 未成功平滑重启,或 CDN 缓存了旧证书强行重启 Nginx 服务并更新 CDN 边缘节点证书

Nginx部署SSL证书总结

Nginx 服务器部署 SSL 证书后出现的访问异常,绝大部分并非证书本身损坏,而是由网络层端口拦截(如安全组未放行 443)、证书链完整性缺失(未拼接 Intermediate CA)或服务进程未正确重载引起的。在排查过程中,通过 netstat/ss 检查端口监听,结合 nginx -t 校验配置语法,并按标准指引补全中间证书,即可快速解决大多数 HTTPS 部署障碍。


Nginx 配置了 SSL 证书后,如何实现 HTTP 自动强制跳转到 HTTPS?

A:一般在监听 80 端口的 server 块中加入 301 重定向指令即可。从实际配置来看,最简洁的方法是添加 return 301 https://$host$request_uri;。这样当用户通过 HTTP 访问时,服务器会自动平滑引导至加密端口。

为什么更换了新证书并执行 reload 后,页面显示的还是旧证书?

A:从实际情况来看,有两种可能:一是 Nginx 存在异常后台进程导致平滑重载没有真正应用到主进程,建议通过 systemctl restart nginx 强制重启;二是网站开启了 CDN 或云防,如果没有在云厂商后台同步上架新证书,CDN 节点依然会给用户返回旧的证书文件。

Nginx 安装 SSL 证书后访问出现 502 Bad Gateway 怎么办?

A:Nginx 部署 SSL 后出现 502 报错,一般不是 SSL 证书本身的问题,而是反向代理后端服务(如 PHP-FPM、Node.js、Java Tomcat 或 Python 服务)未启动、端口不通或代理配置中的后端地址写错。需要检查后端服务运行状态以及 proxy_pass 配置路径。

Nginx SSL 证书配置文件一般在哪里?

A:Nginx 的 SSL 配置文件路径取决于系统环境与安装方式。原生安装通常位于 /etc/nginx/nginx.conf/etc/nginx/conf.d/ 目录下;如果是宝塔面板等环境,则多位于 /www/server/panel/vhost/nginx/ 中对应的域名 .conf 文件里。可以通过 nginx -t 输出的路径定位主配置文件的所在位置。

常见问题

1. 配了SSL还提示不安全?

这是因为页面有死链

网页里还带着 http:// 的图片或代码。把它们改成 https://

没配中间证书。把服务商给的两个证书内容合并成一个文件塞给 Nginx。访问的域名和证书上的名字没对上。


2. 部署HTTPS后打不开网站?

应该是端口没开,服务器安全组和本地防火墙忘了放行 ​443端口​。

运行 nginx -t 查错。看证书路径有没有写错、文件还在不在。


3. HTTP 怎么自动跳转 HTTPS?

在 80 端口的 server 里直接加这行:

nginx

return 301 https://$host$request_uri;

注意要谨慎使用此类代码。


4. 换了新证书还显示旧的?

应该是没彻底重启

别用 reload。直接输入 nginx -s stop 关掉,再输入 nginx 重启。

如果用了云加速或 CDN,必须去云厂商后台把新证书也上传一份。


5. Nginx 支持免费证书吗?

完全支持

技术上没什么区别,直接用 Certbot 申请 Let's Encrypt,一行命令搞定,但记得定好闹钟或脚本,90天过期前必须续期。


本文属于「如何安装 SSL 证书」专题内容,查看更多相关内容: → SSL 证书完整安装教程

有用
分享
无用
反馈
返回顶部
0 个回答
2285 次浏览
立即探索,帮您快速寻找适合您的SSL数字证书 申请SSL证书
免费SSL证书 - SSL证书申请与HTTPS安全服务平台 | TopSSL
提供免费与付费SSL证书申请
关注 TopSSL 公众号, RSS订阅SSL资讯与技术支持

TopSSL是一站式SSL证书服务平台,提供免费SSL证书申请、商业SSL证书服务及HTTPS安全解决方案,支持DV、OV、EV、通配符和国密SSL证书服务。2004-2026 © 北京传诚信  版权所有 |  北京市朝阳区鹏景阁大厦16层

技术协助:wo@topssl.cn 企业咨询:vip@topssl.cn