504网关超时 - 上游超时

时间:2013-10-16 12:49:01

标签: nginx fastcgi

当我的服务器突然停止工作时,一切运行顺利。 我正在使用Linode和Nginx fast-cgi

这是我的日志文件:

上游超时(110:连接超时),同时从上游读取响应头,客户端:76.66.174.147,服务器:iskacanada.com,请求:“GET / HTTP / 1.1”,上游:“fastcgi://127.0 .0.1:9000“,主持人:”www.iskacanada.com“

location ~ \.php$ {
    include        fastcgi_params;
    fastcgi_read_timeout 120;
    fastcgi_pass   localhost:9000;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

当我想重启mysql时,它说:

sudo service mysql restart 停止:未知实例: 开始:作业无法启动

知道发生了什么事吗?

3 个答案:

答案 0 :(得分:8)

经过几个小时的调试后,我就是这样做的:

使用Ubuntu 12.04,Nginx和php5-fmp

  1. 请检查您的日志文件!日志文件是你的朋友。 504网关问题意味着我的服务器无法与网站正常通信。所以在我的情况下,我有Nginx和php-fpm管理请求。我必须检查2个日志文件:

    /var/log/nginx/error.log和/var/log/php5-fpm.log

  2. 在error.log中:

    recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 76.66.174.147, server: xxxxxxx.com, request: "GET /wp-admin/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.xxxxxxx.com"
    

    在php5-fpm.log中:

    无法绑定地址'127.0.0.1:9000'的侦听套接字:地址已在使用中(98)

    所以我发现我需要通过输入

    来检查我的php5-fpm进程
    netstat | grep 9000
    tcp        0      0 localhost.localdom:9000 localhost.localdo:58424 SYN_RECV   
    tcp      913      0 localhost.localdom:9000 localhost.localdo:57917 CLOSE_WAIT 
    tcp      857      0 localhost.localdom:9000 localhost.localdo:58032 CLOSE_WAIT 
    tcp     1633      0 localhost.localdom:9000 localhost.localdo:58395 CLOSE_WAIT 
    tcp      961      0 localhost.localdom:9000 localhost.localdo:58025 CLOSE_WAIT 
    tcp      857      0 localhost.localdom:9000 localhost.localdo:58040 CLOSE_WAIT 
    tcp      953      0 localhost.localdom:9000 localhost.localdo:58005 CLOSE_WAIT 
    tcp      761      0 localhost.localdom:9000 localhost.localdo:58016 CLOSE_WAIT 
    tcp     1137      0 localhost.localdom:9000 localhost.localdo:57960 CLOSE_WAIT
    

    很多close_wait !!!这是不正常的...所以我通过输入
    来杀死所有进程     fuser -k 9000 / tcp

    然后我改变了我的

    /etc/php5/fpm/pool.d/www.conf

    并改变这个:

    request_terminate_timeout = 30秒

    现在该网站正常运作。我希望这可以解决问题,因为它是间歇性的。

答案 1 :(得分:1)

检查PHP是否仍在运行:sudo ps aux | grep php

如果是,请重新启动sudo service php5-fpm restart,如果没有启动sudo service php5-fpm start

如果您需要重新启动数据库,只需将restartstopstart传递给service命令:sudo service mysql startsudo service mysql restartsudo service mysql stop

答案 2 :(得分:-1)

我刚刚安装了winginx并遇到了504网关问题。错误日志指向上游服务器" fastcgi://127.0.0.1:9000"。这是nginx代理php的地方。

我打开php-cgi.conf并发现php正在侦听端口9054.将端口更改为9000并且一切正常。

网关是nginx用于连接服务的路由和/或端口。例如,Mongodb配置为开箱即用侦听端口27017。出于安全原因,我倾向于在生产服务器上更改服务上的默认端口,例如php等。