在云控制台把 8080 加进了安全组,本地 telnet 依然不通。安全组只是其中一层,从进程到公网至少要过四道关。
按顺序逐层排查
ss -lntp | grep ":8080 " curl -I http://127.0.0.1:8080 ufw status firewall-cmd --list-all
第一行没输出,说明服务根本没监听;监听地址是 127.0.0.1 而不是 0.0.0.0,外网也进不来。这两个是最常见的原因,先看它们再怀疑网络。
再看云上和系统内的防火墙
安全组放行的是入方向,系统内还有 ufw 或 firewalld。两者任意一个没放行,端口就是不通。云上如果用了网络 ACL,也要一并检查。
最后确认路径
telnet 公网IP 8080 traceroute 公网IP
本机 curl 通、公网 telnet 不通,就锁定在防火墙或安全组;两边都不通,回头查进程。排查时按「进程 → 本机 → 防火墙 → 安全组」的顺序走,不要一上来就改云上配置。
换端口后容易忽略的两点
服务改了监听端口,Nginx 反代的上游地址要同步改,否则页面表现为 502 而不是端口不通。安全组里也要新增对应端口,只改服务不改规则同样白费。
另外部分云厂商对低于 1024 的端口有限制,非 root 运行的程序绑不上,换到 8080 这类高位端口反而更省事。