【问题标题】:Nginx 504 Time-out with php-fpmNginx 504 使用 php-fpm 超时
【发布时间】:2014-08-21 13:18:45
【问题描述】:

我的一个站点出现 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

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

【问题讨论】:

  • 套接字真的被创建了吗?如果是,谁是所有者,权限是什么?
  • 抱歉,我是 linux 新手,不知道如何检查。 =( 但是我的其他配置相同的站点可以正常工作。
  • ls -al /var/run/php5-fpm.sock 会告诉你它是否被创建、谁拥有它以及权限是什么。还有你目前使用的 PHP 版本是什么?
  • 是的,它由 www-data 创建和拥有:srw-rw---- 1 www-data www-data 0 Aug 21 17:22 /var/run/php5-fpm.sock 我使用的是 PHP 5.5.15-1~dotdeb.1。

标签: nginx debian php


【解决方案1】:

自 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。

试一试,我相信它应该可以解决您的问题。

【讨论】:

  • 我将 0660 更改为 0666,但问题没有解决 =( 我现在的 www.conf 配置:`listen.owner = www-data listen.group = www-data listen.mode = 0666 `
  • 您确定重启 FPM 并重新检查套接字权限了吗?
  • 我的其他网站在相同的配置下工作得很好。但是不是这个,不知道为什么?¿ =(
  • 是的,我重启了 FPM,也重启了 nginx。
猜你喜欢
  • 2019-01-20
  • 2017-12-28
  • 2021-05-27
  • 2016-11-28
  • 2014-08-19
  • 1970-01-01
  • 2018-02-25
  • 2013-04-08
  • 2020-04-29
相关资源
最近更新 更多