一、问题与背景:
最近在发布一个web项目,在测试环境都是可以的,发布到生产环境通过IP访问也是可以的,但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通,域名却不行,百思不得其解。通过一顿百度搜索,解析说通过nginx配置文件配置这几个地方
bash
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 256k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
结果没有效果,但应该也有些场景应该是可以的,比如说通过IP访问也是报504的错误,但是不是我这种场景。
然后继续有指导说通过在server配置
bash
proxy_connect_timeout 6000; #nginx跟后端服务器连接超时时间(代理连接超时)默认60s
proxy_read_timeout 6000; #后端服务器数据回传时间(代理发送超时)默认值60s
proxy_send_timeout 6000; #连接成功后,后端服务器响应时间(代理接收超时)默认值60s
然后也是没效果。
应该也有些场景应该是可以的,比如说通过IP访问也是报504的错误,但是不是我这种场景。
上面的两种方案应该就是网络上目前提供的两种方案。但是并没有解决我的问题。
那么我们就要从头理解 504错误的场景了。也许并不完全是由于web服务器没有反应引起的。
二、504错误的定义和解析:
504错误代表网关超时 (Gateway timeout),是指服务器作为网关或代理,但是没有及时从上游服务器收到请求。
服务器(不一定是 Web 服务器)正在作为一个网关或代理来完成客户(如您的浏览器或我们的 CheckUpDown 机器人)访问所需网址的请求。 为了完成您的 HTTP 请求, 该服务器访问一个上游服务器, 但没得到及时的响应。
这通常意味着上游服务器已关闭(不响应网关 / 代理),而不是上游服务器和网关/代理在交换数据的协议上不一致。
正常情况下,是由于被请求服务器发送超时引起。
三、导致504错误的原理:
由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答 。
任何客户端在和网络服务器通讯时,都需经过以下循环:
从站点的 IP 名称 ( 即站点的网址-URL, 不带起始的 'http://') 获得一个 IP 地址。这个对应关系 ( 即由 IP 名称向 IP 地址转换的对应关系 ) 由域名服务器 (DNSs) 提供。
打开一个 IP 套接字 (socket) 连接到该 IP 地址。
通过该套接字写 HTTP 数据流。
从Web服务器接受响应的 HTTP 数据流。该数据流包括状态编码, 其值取决于 HTTP 协议 。 解析该数据流得到 状态编码和其他有用信息。
该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为 '504' 时。
这个问题完全是由后端电脑之间 IP 通讯缓慢而产生, 可能包括Web服务器。 如果Web服务器由某一网站托管, 只有负责那个网站设置的人员 才能解决这个问题。
网络上代理和缓存的使用日渐增加。尽管CheckUpDown 机器人将总是试图 ' 钻入 ' 真正收管您的网站的电脑, 但是HTTP 请求实际上落在哪里并不能完全控制。 只要在处理HTTP请求的一连串电脑中, 有一个环节坏了,类似504的错误就很容易产生。
四、ip能访问域名访问报504错误最后解决:
那就可能是域名解析的环境加入防火墙的环节也可能出错导致504。结果后面排查发现域名解析对应端口配置错误导致了504.后面修改了策略,最终解决了问题。
五、504错误还可能是以下场景:
-
计算机浏览器错误:当浏览器配备或设置中有一些错误时,就会出现这个错误
-
DNS错误:域DNS配备不当可能导致浏览域时出错
-
网络不稳定:代理与Web服务器之间的数据连接不良可能导致响应延迟
-
Web服务器速度慢:Web服务器特性低可能导致网关ip请求超时
-
504错误的主要原因是防火墙配置错误:防火墙规则不正确
504 Gateway 如何解决timeout
- 刷新页面
处理504 Gateway timeout错误的第一步是点击更新/重新加载按钮,按F5或再次尝试从搜索框中搜索URL,然后尝试网页。可能是服务器
当时收到的要求比平时多,很多要求都解决不了,导致短时间504 Gateway Timeout。
- 重新启动各种设备
解调器、无线路由器、网络交换机或其他网络硬件的临时问题很可能会导致你看到的504 Gateway Timeout。尝试重启这种设备可能对每个人都有帮助。
- 检查代理服务器的设置
使用浏览器或程序 检查代理服务器设置,确保其正确、准确。网络设置不正确很可能导致504 Gateway timeout错误。
- 更改DNS服务器
变更DNS服务器,特别是在互联网上的各种设备遇到同样错误的情况下。您看到的504 Gateway Timeout的错误很可能是由于您正在使用的DNS服务器问题造成的。
- 修复错误的防火墙配置
防火墙是页面的守护者。它可以保护您的网站免受故意访问者的攻击。然而,您服务器中的网络防火墙可能会遇到一些错误、不正确的设备或适当的标准阻止连接,这将导致504 Gateway timeout错误。
- 联系您的服务器服务提供商
在某些情况下,试着联系您的服务器服务提供商。这个问题可以更有效地发现。
- 稍后试着浏览这个网站
如果任何其他方法都不成功,那么你最后的选择就是稍微试着浏览一下这个网站。