如何解决nginx 504网关超时错误

时间:2019-04-29 03:17:21  来源:igfitidea点击:

什么是504网关超时错误?

当访问网站时,浏览器会将请求发送给站点的Web服务器。
然后,Web服务器处理该请求,并将所请求的资源同时包括HTTP标头发送回去。
这个HTTP标头包含了HTTP状态代码。用来表示一切正常或者出现问题。
例如,状态码为200表示“一切正常”。

504网关超时错误表示“充当网关的服务器超时,等待另一台服务器响应。”

由于不同的Web浏览器,操作系统和服务器。看到的内容可能类似下面的,都输入网关超时:

“504 Error”
“504 Gateway Time-out – The server didn’t respond in time”
“504 Gateway Timeout NGINX”
“504 Gateway Timeout”
“Error 504”
“Gateway Timeout (504)
“Gateway Timeout Error”
“HTTP 504”
“HTTP Error 504 – Gateway Timeout”
“HTTP Error 504”
“NGINX 504 Gateway Timeout”
“This page isn’t working – 域名太久未响应”
白屏

如何解决504网关超时错误

尝试重新加载页面

可能是主机或服务器只是过载,可以等待几分钟后重新加载页面

禁用代理设置

检查DNS

暂时禁用CDN

服务器性能问题

504错误更经常发生在流量大的电子商务网站,这些网站有很多无法缓存的请求,因为它们有时会导致服务器过载。Nginx或Apache正在等待某些响应,并且超时。

具体原因可能是:

服务器速度慢:服务器太慢而无法响应请求,因此它会生成网关错误。
没有足够的PHP工作进程: 如果队列和待办事项已满,则旧请求将开始被忽略。
防火墙问题:服务器上的防火墙可能配置不正确或规则导致无法建立连接。
网络连接:如果代理服务器和Web服务器之间的网络连接出现问题,则可能导致HTTP请求的响应延迟。如果使用了负载均衡器,也可能会出现网络连接问题。
HTTP超时: 浏览器和Web服务器之间的连接保持打开状态太长时间时,可能会发生。这些通常在数据导入时占用了带宽后发生。

遭遇垃圾邮件,僵尸程序或DDoS攻击

检查您的插件和主题

第三方插件或主题的缓慢请求确实会导致延迟,因为这会占用更多的PHP工作进程。一旦达到PHP工作进程的限制,队列就会开始推送较旧的请求,这可能会导致504错误。

作为代理的Nginx设置

如果是使用Nginx + FastCGI(php-fpm)或Nginx上作为Apache的代理,则可以更改一些其他设置来帮助防止504网关超时错误。

Nginx + FastCGI上的504网关超时错误(php-fpm)

修改php-fpm配置文件 /etc/php5/fpm/pool.d/mysite.conf

request_terminate_timeout = 300

修改php.ini配置文件/etc/php.ini,增大执行时间

max_execution_time = 300

修改nginx配置 nginx.conf

location ~ .php$ {
...
fastcgi_read_timeout 300;
}

如果nginx充当代理

则需要修改nginx.conf,设置代理超时时间。

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;