Nginx 504使用php-fpm超时

时间:2014-08-21 13:18:46

标签: nginx debian php

我为其中一个网站获得了504网关超时。请帮忙找出原因?

这是我的nginx配置:

server {

    listen   80;
    server_name domain.com;
    root /home/user/domain.com;

    error_log /home/user/domain.com/error.log;

    location / {
        try_files $uri /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass  unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

Nginx错误日志:

$ sudo tail -n 1 domain.com/error.log 
2014/08/21 17:09:35 [error] 16790#0: *30 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 5.18.54.52, server: domain.com, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock", host: "domain.com"

在php-fpm日志中没有任何内容:

sudo tail -n 1 /var/log/php5-fpm.log
[21-Aug-2014 17:08:31] NOTICE: ready to handle connections

这是我的www.conf:

$ sudo nano /etc/php5/fpm/pool.d/www.conf

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 10

请帮我解决这个问题!谢谢!

1 个答案:

答案 0 :(得分:0)

从PHP 5.5.12开始,更改了FPM套接字权限以解决与安全性相关的错误,您可以在此处阅读更多相关信息 - > https://bugs.php.net/bug.php?id=67060

您的listen.mode = 0660现在应该在FPM池配置中设置为listen.mode = 0666。还要确保您的listen.ownerlisten.group与运行Nginx的用户名/组相同。以下是我在设置中的内容:

listen.owner = nginx
listen.group = nginx
listen.mode = 0666

我假设您的Nginx配置已user www-data;,然后只需将我上面的nginx引用更改为www-data

至于Nginx,这是我目前正在使用的一个工作示例:

# PHP-FPM Support
location ~ \.php$ {
    fastcgi_pass unix:/var/run/nginx.sock;
    include fastcgi.conf;
}

我认为你的Nginx配置很好,但是如果你想尝试一些不同的东西我会发布我的配置作为你的测试。

在进行任何配置更改后,不要忘记重启PHP-FPM。

尝试一下,我确定它应该可以解决您的问题。