事情本身不复杂,线索都在日志里。服务本机 curl 正常,外部访问一直连接被拒绝,端口检测显示没有开放,可进程状态明明是运行中。
把日志和配置对完,能解释这个现象的基本就这几处。监听地址绑定在了回环地址上。还有一种是配置里写的是本地地址而不是全部网卡。
还有一种情况,容器端口只映射到了本机回环。
先确认监听地址
ss -lntp | grep 8000
本机与外部分别测试
curl -I http://127.0.0.1:8000
再往下把监听地址改成全部网卡
grep -n 'listen' /etc/app/config.yml
等前面都确认过,再重启并确认监听
systemctl restart app && ss -lntp | grep 8000
命令输出我都留了记录,免得改完记不清原来的值。
怎么算真的好了,看的是同一批现象。监听地址变为全部网卡,外部访问正常,本机访问也不受影响。
补一句。开发环境常用回环地址图省事,上线照抄就是典型的连不上;对外服务一律绑全部网卡再加防火墙限制。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。