云服务器Web服务不可访问的首要原因是云平台安全组未放行80/443端口;其次需检查系统防火墙(firewalld/ufw)是否开放对应端口;再确认Nginx/Apache监听地址为0.0.0.0:80而非127.0.0.1:80;最后用curl -v http://公网IP:80直连验证。

检查云服务器安全组是否放行 80 和 443 端口
云服务商(如阿里云、腾讯云、华为云)默认不开放 Web 端口,即使宝塔里网站已启动、Nginx 配置无误,请求根本到不了服务器进程。这是最常被跳过的环节。
- 登录对应云平台控制台,找到你的 ECS 实例 → 进入「安全组」→ 查看绑定的安全组规则
- 确认入方向(Inbound)有两条规则:
80/tcp和443/tcp,协议类型为 TCP,授权对象为0.0.0.0/0(或你信任的 IP 段) - 若只有
22/tcp或空规则,直接添加;若规则存在但端口写成8080或协议选了 UDP,需编辑修正 - 修改后无需重启服务器,规则秒级生效;但部分旧安全组可能缓存,可临时用
telnet your-server-ip 80从本地测试连通性
验证系统防火墙是否实际放行端口
宝塔面板的「安全」页面只管自己加的规则,Linux 系统级防火墙(firewalld 或 ufw)可能仍拦截流量,尤其 CentOS 7+/Rocky 9 默认启用 firewalld。
- 执行
sudo firewall-cmd --list-ports,检查输出是否含80/tcp和443/tcp - 若缺失,运行:
sudo firewall-cmd --permanent --add-port=80/tcp和sudo firewall-cmd --permanent --add-port=443/tcp,再执行sudo firewall-cmd --reload - Ubuntu 系统用
ufw:先sudo ufw status,再sudo ufw allow 80和sudo ufw allow 443 - 注意:
firewall-cmd --reload不会中断已有连接,但错误配置可能导致 SSH 断连——建议操作前先开一个备用终端保持连接
确认 Nginx/Apache 真正监听在公网接口上
服务虽运行,但若配置成只监听 127.0.0.1:80 或 [::1]:80,外部请求照样被拒绝。宝塔默认是监听 0.0.0.0:80,但手动改过配置或升级后可能回退。
- 执行
sudo ss -tuln | grep ':80\|:443',重点看第二列(Local Address:Port)是否为*:80或0.0.0.0:80;若显示127.0.0.1:80,说明仅限本机访问 - 检查站点配置文件中
listen指令:Nginx 的server块里应为listen 80;(非listen 127.0.0.1:80;),HTTPS 同理需listen 443 ssl; - 改完配置必须执行
sudo nginx -t && sudo nginx -s reload,仅重启服务(systemctl restart nginx)不保证重载新 listen 设置
绕过 DNS 直接测试端口连通性
别依赖 ping 或浏览器地址栏——ping 走 ICMP,curl http://your-domain.com 依赖 DNS 解析成功。真要验证端口是否通,得用 IP + 端口直连。
- 在本地命令行执行:
curl -v http://,观察是否返回 Nginx 欢迎页或 502/503 错误(说明端口通但后端挂了)your-server-public-ip:80 - 若超时或 connection refused,问题一定出在安全组 / 系统防火墙 / Nginx 未监听三者之一
- 若返回 403 或 404,说明请求已抵达 Nginx,问题转向网站根目录、权限或伪静态等更上层配置
- 注意:部分云厂商控制台提供「远程登录」Web 终端,它走的是内网通道,
curl 127.0.0.1:80成功不代表外网能通——必须用公网 IP 测试
真正卡住的人,往往在第一步就停住了:没去云平台翻安全组,以为“宝塔开了端口就等于全世界都能连”。而系统防火墙和监听地址这两个点,又容易被当成“应该没问题”的盲区。动手前先做一次 curl -v http://,结果比猜十次都准。your-server-ip:80










