转自:http://www.szbelle.com/article/20812.html php
Nginx 的特色是处理静态很给力,Apache的特色是处理动态很稳定,二者结合起来即是LNMPA,nginx处理前端,apache处理后端,这样处理静态会 很快,处理动态会很稳定。当我觉得安装完成之后便万事大吉,不料更新网站的时候却出现504 Gateway time-out;起初还觉得这是偶然,屡次尝试后依然出现这样的状况,所以才决定查找解决方法。 html
LNMP面对504 Gateway time-out 前端
由于504 Gateway time-out是Nginx的专属错误,所以起初我觉得是nginx配置出错,查找网上的教程,找到相应的解决方法,下面简单说说LNMP面对此种状况 的解决方案。Nginx出现这样的错误,是由于对PHP-CGI进程数限制得过小,面对更新网站这类操做,极可能出现进程不足而超时的状况,所以要修改两 处涉及处处理时间的文件。 nginx
首先是nginx.conf文件,这个文件在/nginx/conf/nginx.conf,打开之后,主要修改前面几个时间,深圳网站建设贝尔利建议修改成120秒以上。至于用什么工具修改,推荐在线命令行编辑;或者用winscp下载下来,用Dreamweaver修改。 apache
fastcgi_connect_timeout 300s; 后端
fastcgi_send_timeout 300s; 服务器
fastcgi_read_timeout 300s; php-fpm
fastcgi_buffer_size 128k; 工具
fastcgi_buffers 8 128k;#8 128 网站
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
其次要修改php-fpm.conf文件,这个文件在/php-5.2.17/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通讯时间,具体是配置proxy.conf,这个文件在/nginx/conf/下面,名字可能会有变化,比如有的安装包是laproxy.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组合依然是设置先后端的通讯时间。