nginx服务器出现504 gateway time-out怎么解决

作网站的同窗常常会发现一些nginx服务器访问时候提示504 Gateway Time-out错误,而出现这种错误有两种状况,第一种多是因为nginx默认的fastcgi进程响应的缓冲区过小形成的, 这将致使fastcgi进程被挂起, 若是你的fastcgi服务对这个挂起处理的很差, 那么最后就极有可能致使504 Gateway Time-out。而第二种就有多是PHP环境的配置问题,有些网站一直是使用nginx作代理后端的apache运行php来提供服务。apache常常会不按期不定时间的出现不能服务失去响应,而后nginx出现”504 Gateway Time-out”.

那么遇到这些状况应该怎样处理呢?下面是关于nginx服务器出现504 Gateway Time-out的解决方法。php

缘由一:nginx

因为nginx默认的fastcgi进程响应的缓冲区过小形成apache

解决方式:后端

通常默认的fastcgi进程响应的缓冲区是8K,这时能够设置大一点,在nginx.conf里,加入:安全

fastcgi_buffers 8 128k服务器

这表示设置fastcgi缓冲区为8块128k大小的空间。网络

固然若是在进行某一项即时的操做, 可能须要nginx的超时参数调大点, 例如设置成60秒:php-fpm

send_timeout 60;测试

通过这两个参数的调整,通常不会再提示“504 Gateway Time-out”错误,问题基本解决。网站

状况二:

PHP环境的配置问题

有时候网站须要对php-fpm和nginx进行配置修改。由于这种状况下,也会出现“504 Gateway Time-out”错误提示。而这时候Nginx 504 Gateway Time-out的含义就是所请求的网关没有请求到,简单来讲就是没有请求到能够执行的PHP-CGI。

解决方式

更改php-fpm的几处配置:

把max_children由以前的10改成如今的30,这样就能够保证有充足的php-cgi进程能够被使用;

把request_terminate_timeout由以前的0s改成60s,这样php-cgi进程 处理脚本的超时时间就是60秒,能够防止进程都被挂起,提升利用效率。

接着再更改nginx的几个配置项,减小FastCGI的请求次数,尽可能维持buffers不变:

fastcgi_buffers由 4 64k 改成 2 256k;

fastcgi_buffer_size 由 64k 改成 128K;

fastcgi_busy_buffers_size 由 128K 改成 256K;

fastcgi_temp_file_write_size 由 128K 改成 256K。

从新加载php-fpm和nginx的配置,再次测试,若是没有出现“504 Gateway Time-out”错误,问题解决。

状况三

另外,php-fpm的默认静态处理方式会使得php-cgi的进程长期占用内存而没法释放,这也是致使nginx出错的缘由之一,所以能够将php-fpm的处理方式改为apache模式。

SSL证书是HTTP明文协议升级HTTPS加密协议的重要渠道,是网络安全传输的加密到通道。关于更多SSL证书的资讯,请关注GDCA(数安时代)。GDCA致力于网络信息安全,已经过WebTrust 的国际认证,是全球可信任的证书签发机构。GDCA专业技术团队将根据用户具体状况为其提供最优的产品选择建议,并针对不一样的应用或服务器要求提供专业对应的HTTPS解决方案。

相关文章
相关标签/搜索