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. [转载]css3属性box-sizing:border-box的作用

    http://jastate.com/css3-properties-box-sizingborder-box.html 定义和用法 按照w3c school的说法,box-sizing:border ...

  2. jquery easyui根据需求二次开发记录

    1.tree需要显示多个图标 实际需求:设备树上节点需搁三个图片,分别标识运行状态.告警状态.设备类型 解决方法:给tree的iconCls传入一个数组,分别是各状态下的class(css),然后要改 ...

  3. 关于body/documentElement ---->clientHeight, offsetHeight, scrollHeight

    http://blog.csdn.net/woxueliuyun/article/details/8638427 http://blog.sina.com.cn/s/blog_9dd702d50101 ...

  4. 这样就算会了PHP么?-5

    汇集一点关于数据深入一些的几个函数,去重,弹出,加入,查找.... <?php $str = "时装,休闲,职业装"; $strs = explode(",&quo ...

  5. windows设备驱动安装指南

    高观点下的设备驱动安装(overview) 一.windows是怎样安装设备的? 第一步:新设备的识别 在给一个新设备安装驱动之前,总线或集线器(hub)驱动会为连接到PC上的设备分配一个硬件ID(h ...

  6. EXTJS4:在grid中加入合计行

    extjs4很方便的实现简单的合计(针对在不分页的情况下): 它效果实现在:Ext.grid.feature.Summary这个类中 Ext.define('TestResult', { extend ...

  7. 浅谈单片机、ARM和DSP的异同

    犹记得当年读书的时候,老师说单片机.ARM.DSP有互通之处,都是CPU,但听老师讲都听不懂. 我该如何理解他们,并找出他们的异同呢?我们来看看行内人的看法: ICer,从事ARM CPU的SOC设计 ...

  8. 人人必知的10个jQuery小技巧

    收集的10个 jQuery 小技巧/代码片段,可以帮你快速开发. 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而不需要使用其他插件. // Back t ...

  9. scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名

    对拷文件夹 (包括文件夹本身) scp -r   /home/wwwroot/www/charts/util root@192.168.1.65:/home/wwwroot/limesurvey_ba ...

  10. <php>过时方法连接数据库代码

    <?php //1.生成链接 $db_connect = mysql_connect("localhost","root","20982239& ...