问题现象
当您完成服务器项目部署后,发现通过外网IP或域名无法访问服务,可能表现为以下情况:
排查与解决方案
确认服务本地运行状态
netstat -tunlp | grep <端口号> # 检查服务是否监听目标端口 systemctl status <服务名> # 查看Nginx/MySQL等服务的运行状态
systemctl start <服务名>
重启服务。测试本地访问
curl http://127.0.0.1:<端口号> # HTTP服务测试 telnet 127.0.0.1 <端口号> # TCP服务测试
nginx.conf
或Spring Boot的application.properties
)中的端口绑定。systemctl stop firewalld # CentOS ufw disable # Ubuntu
firewall-cmd --zone=public --add-port=<端口号>/tcp --permanent # CentOS ufw allow <端口号>/tcp # Ubuntu
TCP
目标服务端口
(如80/443/8080) 0.0.0/0
(临时测试)或指定IP段 注:安全组配置生效通常需1-3分钟。
0.0.0
,而非 0.0.1
: # Nginx示例 server { listen 0.0.0.0:80; # 正确 # listen 127.0.0.1:80; # 错误(仅允许本地访问) }
nslookup <域名>
或 dig <域名>
检查DNS解析结果是否指向服务器公网IP。 问题类型 | 表现 | 解决方案 |
---|---|---|
服务绑定127.0.0.1 | 本地可访问,外网超时 | 修改配置为监听0.0.0.0 |
安全组未放行 | 端口检测工具显示关闭 | 检查云平台安全组规则 |
服务器多网卡未指定 | 服务监听错误网卡IP | 明确指定监听IP或0.0.0.0 |
SELinux阻止访问 | 服务日志报权限错误 | 执行 setenforce 0 临时关闭 |
外网无法访问的多数原因集中在防火墙拦截、端口未开放、服务绑定地址错误三方面,按上述步骤逐一排查,可解决90%以上的部署问题,若仍无法解决,建议提供以下信息寻求进一步帮助:
telnet <公网IP> <端口>
测试结果 引用说明