本文图文讲解并记录一次迁移服务器后nginx报502和504导致二级域名无法访问的排解过程。
情况是这样的,一年左右前我在某云上搭了docker环境然后在容器中部署各种服务,最后用nginx来代理转发各个服务的请求,而且所有访问都配SSL证书并且已经全部能够正常访问的了,昨天晚上,不,上个月了打算对服务器进行迁移,然后就把旧的系统搞成镜像然后整个共享到另一个账号,重装完系统启动后发现二级域名老是报502 Bad Gateway或504 Gateway Time-out而无法访问。
日志也就是报下面这些:
[error] 7#7: *4 connect() failed (110: Connection timed out) while connecting to upstream, client: xx.xx.xx.xx, server: xxx.xubingtao.cn, request: "GET /xxxx/index.html HTTP/1.1", upstream: "http://172.18.0.x:90xxx/xxx/index.html", host: "xxx.xubingtao.cn"
网上找资料有说查看端口占用(netstat -tunlp | grep 端口)、资源使用情况(top、free)、磁盘空间(df -h)、加大nginx超时时长等等。
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_connect_timeout 300;
调大nginx.conf的keepalive_timeout:
但都无济于事,无奈只好找服务器供应商帮忙,那个人却叫我放开进站端口,但我说这样不安全,而且我之前没放开也是可以正常访问的,为了证明给他看,我加了端口后用IP可以访问但域名还是不行:
最后他们也很无奈:
本以为把旧服务器打包成镜像到新服务器可以很快搞定,结果没想到竟然搞了两个月(11月30日、12月1日),最后还是凭自己的超强敏锐觉悟能力摸索到了解决办法,我就试着在Linux防火墙放开某个端口看能不能用域名访问,结果竟然可以,而且关掉后依然可以,而且其他域名也都可以了:
这真是神奇呀,后面我在工单上反馈可以了,有个工作人员打电话过来,我把情况跟他说一下,然后说他们的系统真神奇呀,他说应该不是系统的问题,系统他们也是直接安装而已,可能是docker容器的问题,好吧,是我玩的太高端了😂。
另外还要用docker inspect 查看运行容器的IP及端口跟你conf.d目录下配的IP及端口是否一致,还有Linux账号权限是否一致等等。
展开阅读全文
上一篇: 秦始皇兵马俑博物馆
Hello Dear, are you genuinely visiting this web site daily, if so then you will definitely get pleasant knowledge. Amata Tabb Zorana
Way cool! Some very valid points! I appreciate you penning this article and also the rest of the website is also very good. Arleta Bartholomeo Hubert