起因
今早起来, 突然发现网站挂了, 直接报504 Gateway Time-out
经过
我立马联想是否是docker
挂了或者数据库容器出了问题
进入终端 使用docker ps
所有容器都在正常运行 没问题, 然后docker logs --tail=10 mysql
数据库也没报错
我怀疑是不是docker内部哪里卡住了, 于是systemctl restart docker
立马重启docker
, 然后重新访问网站 还是不行
有点懵了, 到底哪里出了问题呢? 网上说是Nginx
配置问题, 可是我nginx
配置一直都没动过, 而且查看nginx
容器日志也是正常, 难道是docker
容器间通信不正常?
紧接着我又进入nginx
容器, 使用nc -zv wordpress 80
指令进行容器间通信测试, 也是正常打通的
这问题到底是出在哪了?
难道真的只是超时? 我给的时间太短了不成? 于是乎 我干脆将nginx
反向代理超时时间调大, 死马当活马医, 不试试怎么知道呢
我将以下三行配置加入到代理块中:
1 | proxy_connect_timeout 300s; |
具体配置如下:
1 | location /foo { |
然后重启nginx
, 这时访问网站 次数504 Gateway Time-out
消失了, 换成了Error establishing a database connection
我靠, 原来还是数据库的问题
结果
我开始回忆, 前段时间刚进行docker
跨服务器迁移, 昨天旧服务器刚好到期停机, 今天就突然访问不上了, 难道我的程序此时访问的还是原来旧服务器的数据库
对了 我的源码目录是直接从旧服务器拷贝过来的, 虽然docker
容器是新建的, 但是因为存在旧目录 所以docker run
配置的数据库参数全部无法重写, 也就是说程序配置文件中的数据库连接参数没有被重写
恍然大悟, 立马进入源程序目录找到配置文件打开查看, 果真如此, 然后将其修改为新的
此时重新访问, 网站正常显示
本文为作者原创 转载时请注明出处 谢谢
微信公众号二维码如下: