背景
我的网络服务端是用docker搭建的Nginx服务器。在一次重启网络服务service network restart
后监控机器人告知服务挂了。检查以后发现服务可以ping通,查询日志无异常,docker服务反复重启也无法使其正常生效。考虑到使用的是弹性公网会不会是虚拟网络之间的问题,经排查后也不存在该问题。
解决方案
在google找方案的时候受到启发,输入netstat -tunlp
检查监听端口。果然没有只有一条tcp6 :::80
的监听而没有应当有的0.0.0.0:80
的监听。那么问题就出在端口方面,而我docker的状态明明写的是0.0.0.0:80->80/tcp
啊,为什么会没有监听ipv4的端口?
为使其能够正常运行。编辑/etc/sysctl.conf
加上一条以开启ipv4转发
1 | net.ipv4.ip_forward=1 |
如果改行已存在则直接修改.
成功后输入sysctl -p
检查变更已成功应用。
无需重启即可生效,检查后发现网络服务已恢复正常