已获取SSL证书但网站仍无法访问的故障排查求助
网站部署故障排查方案
一、优先解决URL跳转到内网IP的核心问题
公网/局域网访问均出现跳转内网IP的情况,说明配置中存在硬编码内网地址的规则,按以下顺序排查:
- 检查Virtualmin站点配置:进入「Server Configuration」→「Website Options」,确认「Website addresses」仅包含公网域名/公网IP,无内网IP条目。
- 检查Web服务器配置文件:
- Apache:找到站点对应的
.conf文件(路径通常为/etc/apache2/sites-available/),搜索Redirect、RewriteRule、ServerName、ServerAlias,排查是否存在指向内网IP的重定向规则,或把ServerName设为内网IP的情况。 - Nginx:查看站点配置文件(路径通常为
/etc/nginx/sites-available/),检查server_name、return、rewrite指令,确认无指向内网IP的配置。
- Apache:找到站点对应的
- 检查Web应用自身配置:比如WordPress的「设置-常规」中「WordPress地址」「站点地址」是否设为内网IP;Django/Flask等框架的
ALLOWED_HOSTS及域名配置,是否硬编码内网地址。
二、证书域名不匹配问题修复
访问公网IP出现证书不匹配属于正常现象(证书仅绑定域名,不支持IP),但访问域名时出现该问题需排查:
- 确认Virtualmin SSL配置:进入「Server Configuration」→「SSL Certificate」,检查「Certificate file」和「Private key file」指向Let's Encrypt为你的公网域名颁发的证书文件(路径通常为
/etc/letsencrypt/live/你的域名/),而非自签证书或其他域名/IP的证书。 - 验证Web服务器SSL配置:
- Apache:确认SSL虚拟主机配置中
SSLCertificateFile和SSLCertificateKeyFile路径正确。 - Nginx:确认
ssl_certificate和ssl_certificate_key指向正确的证书文件。
- Apache:确认SSL虚拟主机配置中
三、公网域名访问不通问题排查
解决跳转问题后,再验证公网连通性:
- 端口连通性测试:用公网环境设备(如手机开流量)执行
telnet 你的公网IP 80和telnet 你的公网IP 443,若不通则:- 检查双路由器端口转发规则:确保第一台路由器将80/443转发至第二台路由器的内网IP,第二台路由器再转发至服务器的内网IP,规则无冲突。
- 检查服务器防火墙:
- ufw:执行
ufw status,确认已允许80/tcp和443/tcp。 - iptables:执行
iptables -L -n | grep 80和iptables -L -n | grep 443,确认存在ACCEPT规则。
- ufw:执行
- 排查ISP端口封禁:部分家用宽带运营商会封禁80/443端口,可临时修改Web服务器和路由器转发端口为8080/8443,测试
你的域名:8080是否能访问,判断是否为端口封禁问题。
四、补充验证步骤
- 确认DNS解析正确性:执行
nslookup 你的域名,确保返回的是你的公网IP,而非内网IP。 - 清除DNS缓存:局域网内访问跳内网可能是本地/路由器DNS缓存导致,可将路由器DNS改为公网DNS(如1.1.1.1、8.8.8.8),或清除本地设备DNS缓存后重试。
内容的提问来源于stack exchange,提问作者Endalma
相关产品推荐
相关产品推荐

