事情本身不复杂,线索都在日志里。服务本机 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

命令输出我都留了记录,免得改完记不清原来的值。

怎么算真的好了,看的是同一批现象。监听地址变为全部网卡,外部访问正常,本机访问也不受影响。

补一句。开发环境常用回环地址图省事,上线照抄就是典型的连不上;对外服务一律绑全部网卡再加防火墙限制。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189