Nginx的特点是处理静态很给力,Apache的特点是处理动态很稳定,两者结合起来便是LNMPA,nginx处理前端,apache处理后端,这样处理静态会很快,处理动态会很稳定。当我以为安装完成以后便万事大吉,不料更新网站的时候却出现504 Gateway time-out;起初还以为这是偶然,多次尝试后依然出现这样的情况,因此才决定查找解决方法。
 
  LNMP面对504 Gateway time-out
 
  因为504 Gateway time-out是Nginx的专属错误,因此起初我以为是nginx配置出错,查找网上的教程,找到相应的解决方法,下面简单说说LNMP面对此种情况的解决方案。Nginx出现这样的错误,是因为对PHP-CGI进程数限制得太小,面对更新网站这类操作,很可能出现进程不足而超时的情况,因此要修改两处涉及到处理时间的文件。
 
  首先是nginx.conf文件,这个文件在/www/wdlinux/nginx/conf/nginx.conf,打开以后,主要修改前面几个时间,建议修改为120秒以上。至于用什么工具修改,推荐在线命令行编辑;或者用winscp下载下来,用Dreamweaver修改。
 
/www/wdlinux/nginx/conf/nginx.conf 和 /www/wdlinux/nginx-1.0.15/conf/nginx.conf是一样的。
  fastcgi_connect_timeout 300s;
 
  fastcgi_send_timeout 300s;
 
  fastcgi_read_timeout 300s;
 
  fastcgi_buffer_size 128k;
 
  fastcgi_buffers 8 128k;#8 128
 
  fastcgi_busy_buffers_size 256k;
 
  fastcgi_temp_file_write_size 256k;
 
  其次要修改php-fpm.conf文件,这个文件在/www/wdlinux/etc/php-fpm.conf,不同的一键安装包位置有所不同,反正找找php安装以后文件下面的etc文件夹即可,在线编辑或下载下来用Dreamweaver编辑。
 
  进入文件后搜索”max_children”这是php-cgi进程数,一个进程占20M~30M内存,按自己的VPS或云主机内存进行计算,好比512M内存,推荐设置为18即可;另外搜索”request_terminate_timeout”,这是超时时间,若php程序要长时间运作,那么设置时间大一点会比较好,好比设置为120秒,单位默认是秒,或者写成120同样可以。
 
  LNMPA遇到504 Gateway time-out
 
  当我按照Nginx的解决方法设置,很快设置成功,不过依然会出现504 Gateway time-out,这时我直接切换为LNMP组合,发现不再遇到504 Gateway time-out错误,这说明设置已经生效;为什么还会出现这样的错误呢?
 
  经过大量的资料查找,终于发现这是Nginx与Apache通信时间设置问题,当用户发出php脚本执行请求,nginx不会执行php,会把这个问题留给后台的apache,nginx会等待一段时间,apache可以在等待时间内处理php脚本请求,若未处理完,nginx便已未收到数据请求而返回504 Gateway time-out错误,实际情况是apache依然会在后台处理完php脚本,只是前台返回错误。
 
  解决方法是修改nginx与apche通信时间,具体是配置naproxy.conf,这个文件在/www/wdlinux/nginx/conf/下面,名字可能会有变化,好比有的安装包是naproxy.conf,反正是**proxy.conf文件。
 
  proxy_connect_timeout 60;
 
  proxy_send_timeout 600;
 
  proxy_read_timeout 90;
 
  proxy_buffer_size 128k;
 
  proxy_buffers 8 128k;
 
  proxy_busy_buffers_size 256k;
 
  proxy_temp_file_write_size 100m;
 
  第一项是连接时间,前端连接后端时间,60s以内即可,第二个是发送时间,允许后端返回数据的时间,90s以内即可,第三个时间是读写时间,这是前端等待后端处理时间,这是导致504 Gateway time-out的根本原因,出现这个错误,说明这个值太小,推荐不小于600s,服务器越差,那么设置得更长,保证处理完毕。
 
  当我把这个文件设置好,重启nginx和apache,再次更新文章,已经不会遇到这类错误,说明出错原因不是nginx,而是前段和后端的通信时间太短。另外,nginx还会有502错误,实际上原理是差不多的,同样设置上面这部分文件,LNMPA组合依然是设置前后端的通信时间。

WDCP LNMPA和LNMP 504 Gateway time-out错误的解决方法的更多相关文章

  1. LNMPA遇到504 Gateway time-out错误的解决方法

    Nginx的特点是处理静态很给力,Apache的特点是处理动态很稳定,两者结合起来便是LNMPA,nginx处理前端,apache处理后端,这样处理静态会很快,处理动态会很稳定. 当我以为安装完成以后 ...

  2. Nginx报504 gateway timeout错误的解决方法

    转载文章来源:http://www.111cn.net/sys/nginx/90669.htm(若侵删) Nginx报504 gateway timeout错误引起,一个是文件配置问题,另一个是相关处 ...

  3. Nginx 502 Bad Gateway 错误的解决方法

    502 bad gateway 的解决方法 通用配置 proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; # ...

  4. Nginx报504 gateway timeout错误的解决方法(小丑搞笑版。。。)

    一.今天登录我的网站,突然发现报了下面的一个错误: 我的第一反应是:超时了应该是Nginx代理没有设置超时时间,默认的超时时间估计太小了,然后就按照正常的方式用Xshell连接服务器,应该是网络或者是 ...

  5. LNMP中常见的502错误及处理方法

    LNMP配置完成以后,经常遇到502 Bad Gateway的错误提示,究其原因多为2种.下面对这两方面的问题进行分析: 1. 配置方面的错误 配置错误中,或者因为php-fpm找不到路径,或者是权限 ...

  6. 阿里云SLB出现502 Bad Gateway 错误排查解决方法

    502 Bad Gateway The proxy server received an invalid response from an upstream server. 原本系统是通过一个SLB转 ...

  7. nginx报502 bad GateWay错误的解决方法

    nginx+php-fpm+mysql的网站,访问nginx的某个页面,报502 GateWay的错误,一般见到此错误,可以判断是php-fpm的问题,而不是nginx的问题.通过监控nginx的错误 ...

  8. nginx 504 Gateway Time-out错误解决办法

    我们经常会发现大量的nginx服务器访问时会提示nginx 504 Gateway Time-out错误了,下面我来总结了一些解决办法,有需要了解的同学可进入参考. 一般看来, 这种情况可能是由于ng ...

  9. Nginx 502/504 Gateway time-out错误完美解决方案【转发】

      在安装完Nginx+PHP-fpm+Mysql后,跑PHP的应用会经常出现504 Gateway Time-out 或者502 Bad Gateway的情况. Nginx 504 Gateway ...

随机推荐

  1. 新鲜博客出炉www.pubwin2009.net

    既然不快乐,又不喜欢这里,不如一路向西去大理.不是说不喜欢博客园,而是不喜欢现在工作的公司已经向公司递了辞职申请,然后突然有个想把,就是把公司里学到的东西做一个总结,全部写下来正好阿里云可以有免费半年 ...

  2. pyqt5猜数游戏

    电脑随机生成4个互不相等的数,你猜. 1:你猜的数和正确答案相比,位置正确的个数 2:你猜的数虽然在正确答案中,但位置不对,它的个数. 代码如下: #!/usr/bin/env python # -* ...

  3. 文件操作IO流

    fopen 打开文件或者生成文件 getc 向文件中读取一个字符 putc 向文件中写入一个字符 fgets 向文件中读取字符串 参数可以设置获取多少个字符串 fputs 向文件中写入字符串 不自动添 ...

  4. hdu 2019

    Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序.   Input 输入数据包含多 ...

  5. contentSize、contentInset和contentOffset区别

    contentSize.contentInset和contentOffset区别 分类: iphone开发2011-12-05 21:49 23495人阅读 评论(4) 收藏 举报 uiviewios ...

  6. hdu 相遇周期

    #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int ...

  7. perl 登录某网站

    <pre name="code" class="html">use Net::SMTP; use LWP::UserAgent; use HTTP: ...

  8. Android SQLite简介

    SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使 ...

  9. struct2(一)第一个struct程序

    说明:本系列是针对struct2学习过程,主要的目的: 1. 探索针对一个新的开源框架的学习过程. 2. 学习struct2,学习官方对struct2介绍的方法. 3.别把英语忘了. 1. 为了更加清 ...

  10. CSS flex让所有灵活的项目都带有相同的长度,忽略它们的内容:

    .flexbox {     display: -webkit-box;     display: -webkit-flex;     display: -ms-flexbox;     displa ...