hao32的个人日志

解决504 Gateway Time-out(nginx)

504 Gateway Time-out问题常见于使用nginx作为web server的服务器的网站

我遇到这个问题是在升级discuz论坛的时候遇到的

一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓冲区太小造成的, 这将导致fastcgi进程被挂起, 如果你的fastcgi服务对这个挂起处理的不好, 那么最后就极有可能导致504 Gateway Time-out
现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点
在nginx.conf里, 加入:

fastcgi_buffers 8 128k

这表示设置fastcgi缓冲区为8×128k
当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:

send_timeout 60;

我只是调整了这两个参数, 结果就是没有再显示那个超时, 可以说效果不错, 但是也可能是由于其他的原因, 目前关于nginx的资料不是很多, 很多事情都需要长期的经验累计才有结果, 期待您的发现哈!

25 评论

  1. dfgtgthth

  2. dfgtgthth

  3. 伙的网站也出现过这样的情况。学习了

  4. 朋友你好!我对于电脑不是太懂,只是要经常用到,在工作中,或者娱乐中,我经常在娱乐的时候看到这个504 Gateway Time-out,对关于你发表的个人日志:解决504 Gateway Time-out(nginx),我看过了,但是我有1点没弄清楚,应该说是你没有说明白的,现在我就这个问题引出一段话:

    你说:“现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
    默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点

    在nginx.conf里, 加入:

    fastcgi_buffers 8 128k

    这表示设置fastcgi缓冲区为8×128k
    当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:

    send_timeout 60;”
    对于这句话我不清楚你是怎么做的,你是我的电脑里面的什么地方怎么做的,如何操作,怎么样把他加入到你所说的那个位置,那个位置又在哪里,你可不可以说的再明白些,谢谢!!

  5. ls无知无畏啊

  6. admin

    2009-04-20 在 3:58 下午

    -_-! 兄弟,建议你想去弄明白什么是client,什么是server

  7. 我用的是dedecms生成500篇文章以上经常出现504

    用您的方法 还是解决不了

    找了很多文章都是一样 🙁

  8. 今天小试了一下nginx的负载均衡,真是爽啊!
    nginx是什么?
    [quote]
    Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
    [/quote]
    首先是配置十分的简单,而且功能非常强大。真是相见恨晚。
    先来看看配置文件怎么写吧

    worker_processes 1;
    events {
    worker_connections 1024;
    }
    http{
    upstream myproject {
    #这里指定多个源服务器,ip:端口,80端口的话可写可不写
    server 192.168.43.158:80;
    server 192.168.41.167;
    }

    server {
    listen 8080;
    location / {
    proxy_pass http://myproject;
    }
    }
    }

    nginx的负载均衡有哪些功能呢?
    [list]
    [*]如果后面的服务器其中一台坏了,它能自动识别,更牛的是它好了之后nginx可以马上识别
    [*]服务器A和B,如果A的响应时间为3,B的响应时间为1,那么nginx会自动调整访问B的概率是A的3倍,真正做到负载均衡
    [/list]

    在这里还是想说说nginx的安装及运行
    先到http://www.nginx.net/下载最新的源码包。
    我下载到的是nginx-0.5.33.tar.gz
    解压:tar zxvf nginx-0.5.33.tar.gz
    接着:./configure
    再接着:make
    最后:make install
    好的,安装完成了。我在make的时候报了个错,说HTTP Rewrite 模块 有问题,我就./configure –without-http_rewrite_module
    然后再make,make install就可以了。
    安装好了之后新建一个配置文件,把上面的配置文件内容拷进去,当然要修改你的IP,保存为比如 load_balance.conf

    然后启动:
    /usr/local/nginx/sbin/nginx -c load_balence.conf

    如果上面的步骤走下来有问题的话,可以参考:
    nginx的中文维基
    http://wiki.codemongers.com/NginxChs
    当然也可以到官方网站
    http://www.nginx.net
    http://www.nginx.com

    由于nginx的作者是俄国人,所以英文的文档也不是那么完善,对于我来说nginx的最大优点还是配置简单,功能强大
    我曾经配过 apache-jk,那真的不是一般人能配的。太复杂了,而且只能用来做tomcat的负载均衡。
    nginx就没有这个限制,对它来说后面是什么服务器是完全透名的。
    nginx就一点不爽,它本身目前还不能在windows下面跑。
    写了一大堆,哈哈。~~
    说的不对的大家指出哈

  9. 其实大家想过没有,nginx的出现就是体现了它的速度,如果一个请求响应时间要60秒,这样的网站谁会上,所以我不建议调整这样的参数,至少在我们自己写的php应用总,不应该这样干,当然我是指网站前台,如果是后台有可能需要长时间负责操作,特别是dedecms这样的cms系统,很郁闷的,网站分类是多级的,如果文章多了,一次生成全部,fastcgi就拼命的计算,nginx就拼命的等,简直就是灾难,然而很多半罐水的站长,却就喜欢这样操作

  10. 从google找到这里来的,学习了。

  11. 我的个人博客出现了同样的情况。不知道具体什么原因。还请指点。具体情况有截图记录,请看这篇文章:http://wodingdong.com/archives/278.html

  12. 我今天打51,登录时报了一个错,我之前都没见过,好郁闷那,51也报错了,我就在那看看是什么错。

    504 Gateway Time-out
    The server didn’t respond in time.

  13. 回复:解决504 Gateway Time

    ╭╧╮╭╧╮╭╧╮╭╧╮ ╭╧╮╭╧╮╭╧╮╭╧╮
    ║友 ║║ 情║║回║ ║访║ ║欢║║迎 ║║光║ ║临║
    〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓〓〓〓〓〓§〓
       ↓      ↓       ↓      ↓
     ☆★☆   ☆★☆    ☆★☆   ☆★☆
    ☆ 祝 ☆ ☆ 你 ☆  ☆ 快 ☆ ☆ 乐 ☆
     ☆★☆   ☆★☆    ☆★☆   ☆★☆
       ↓      ↓       ↓      ↓

    ….( 踩)朋友Ooooo….
    ……)./….( 踩)….
    …..(_/……)./…..
    ………….(_/……
    留下脚印送你祝福愿你快乐!

    回复时间:2011年4月7日星期四 22:07:09
    欢迎回访我的博客

  14. 简单来说就是没有请求到可以执行的 PHP-CGI

  15. moonle 发表评论说: [2009-01-21 15:42]
    伙的网站也出现过这样的情况。学习了

  16. send_timeout 60;

  17. 本文发表于 星期五 2008-08-08 02:08 属于分类 Server构架. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

  18. 完颜平 发表评论说: [2009-04-08 06:37]
    朋友你好!我对于电脑不是太懂,只是要经常用到,在工作中,或者娱乐中,我经常在娱乐的时候看到这个504 Gateway Time-out,对关于你发表的个人日志:解决504 Gateway Time-out(nginx),我看过了,但是我有1点没弄清楚,应该说是你没有说明白的,现在我就这个问题引出一段话:

    你说:“现在的网站, 尤其某些论坛有大量的回复和很多内容的, 一个页面甚至有几百K
    默认的fastcgi进程响应的缓冲区是8K, 我们可以设置大点

    在nginx.conf里, 加入:

    fastcgi_buffers 8 128k

    这表示设置fastcgi缓冲区为8×128k
    当然如果您在进行某一项即时的操作, 可能需要nginx的超时参数调大点, 例如设置成60秒:

    send_timeout 60;”
    对于这句话我不清楚你是怎么做的,你是我的电脑里面的什么地方怎么做的,如何操作,怎么样把他加入到你所说的那个位置,那个位置又在哪里,你可不可以说的再明白些,谢谢!!

  19. 林红削 发表评论说: [2009-04-13 13:15]
    ls无知无畏啊

  20. 笨鸟一个 发表评论说: [2009-04-22 10:13]
    我用的是dedecms生成500篇文章以上经常出现504

    用您的方法 还是解决不了

    找了很多文章都是一样

  21. 看不懂哎~~~

  22. 没看懂呀没看懂

    没有更简单的方法么?完全没看懂····呜呜~

  23. 诺-一个半路的前端

    我的网站出现504了,因为刚弄这个没多久,都这些还不是很了解,但是想结局问题,求救

发表评论