记录一次504 Gateway Time-out的解决

起因

今早起来, 突然发现网站挂了, 直接报504 Gateway Time-out

image-20210918111428739

经过

我立马联想是否是docker挂了或者数据库容器出了问题

进入终端 使用docker ps 所有容器都在正常运行 没问题, 然后docker logs --tail=10 mysql数据库也没报错

我怀疑是不是docker内部哪里卡住了, 于是systemctl restart docker立马重启docker, 然后重新访问网站 还是不行

有点懵了, 到底哪里出了问题呢? 网上说是Nginx配置问题, 可是我nginx配置一直都没动过, 而且查看nginx容器日志也是正常, 难道是docker容器间通信不正常?

紧接着我又进入nginx容器, 使用nc -zv wordpress 80指令进行容器间通信测试, 也是正常打通的

这问题到底是出在哪了?

难道真的只是超时? 我给的时间太短了不成? 于是乎 我干脆将nginx反向代理超时时间调大, 死马当活马医, 不试试怎么知道呢

我将以下三行配置加入到代理块中:

1
2
3
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;

具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
location /foo {
proxy_pass http://xxx.xxx.xxx.xxx:8080/foo;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
break;
}

然后重启nginx, 这时访问网站 次数504 Gateway Time-out消失了, 换成了Error establishing a database connection

image-20210918111216604

我靠, 原来还是数据库的问题

结果

我开始回忆, 前段时间刚进行docker跨服务器迁移, 昨天旧服务器刚好到期停机, 今天就突然访问不上了, 难道我的程序此时访问的还是原来旧服务器的数据库

对了 我的源码目录是直接从旧服务器拷贝过来的, 虽然docker容器是新建的, 但是因为存在旧目录 所以docker run配置的数据库参数全部无法重写, 也就是说程序配置文件中的数据库连接参数没有被重写

恍然大悟, 立马进入源程序目录找到配置文件打开查看, 果真如此, 然后将其修改为新的

此时重新访问, 网站正常显示

本文为作者原创 转载时请注明出处 谢谢

B站入口

打赏通道

微信公众号二维码如下:

img

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%