无法实现 Nginx 缓存 - 连接被拒绝

无法实现 Nginx 缓存 - 连接被拒绝

尝试实现 Nginx 缓存后,我无法让我的网站正常运行。

我使用 Ubuntu 16.04(xenial)、Nginx(1.10.3)、PHP-FPM(7.0)和 WordPress。

端口 9000(用于 php-fpm)未被 UFW 过滤。

重现我的环境

1-设置配置:

2——创建缓存目录:

mkdir -p /var/cache/nginx/fastcgi_temp/cache/
chmod 755 /var/cache/nginx/fastcgi_temp/cache/
chown www-data:www-data /var/cache/nginx/fastcgi_temp/cache/

3-服务器重启:

systemctl restart nginx.service
/etc/init.d/php*-fpm restart

4- 错误和调试尝试:

*1 connect() failed (111: Connection refused) while connecting to upstream,
client: MY_IP_ADDRESS, server: example.com, request: "GET /
HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000".

浏览器给出:

502 Bad Gateway nginx/1.10.3 (Ubuntu)

调试:

/etc/init.d/php*-fpm status

带来:

● php7.0-fpm.service - The PHP 7.0 FastCGI Process Manager
   Loaded: loaded (/lib/systemd/system/php7.0-fpm.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-04-27 07:09:28 UTC; 3s ago
  Process: 16336 ExecStartPre=/usr/lib/php/php7.0-fpm-checkconf (code=exited, status=0/SUCCESS)
 Main PID: 16346 (php-fpm7.0)
   Status: "Ready to handle connections"

我的问题

为什么连接被拒绝并且我的网站瘫痪了?

NerdOfLinux 的更新:

+ curl -I example.com
HTTP/1.1 301 Moved Permanently
Content-Type: text/html
Content-Length: 194
Connection: keep-alive

grep "listen" /etc/php/7.0/fpm/pool.d/www.conf | grep -v ";"
+ grep --color=auto -v ';'
+ grep --color=auto listen /etc/php/7.0/fpm/pool.d/www.conf
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

答案1

问题在于您错误配置了 nginxfastcgi_pass指令,使其指向不存在的后端/上游网关。

从 14.10(或者是 15.10,我现在记不清具体是什么版本了)开始php-fpm默认监听本地 UNIX 套接字而不是 TCP 端口 9000。我知道这一点是因为我率先在 Ubuntu 和 Debian 中对 FPM 的默认设置进行了更改,并且该更改在打包时得到了接受。我知道这是您的设置,因为listen =您的 FPM 中有一行www.conf显示它在监听套接字。

在服务器块中放入unix:/run/php/php7.0-fpm.sock您的fastcgi_pass指令nginx,而不是127.0.0.1:9000您已有的指令。这样它就可以正常工作,因为这样会使用正确的 PHP 上游网关。

答案2

检查你的 php-fpm 池定义,可以在以下位置找到:/etc/php/7.0/fpm/pool.d

用户www-data用于运行php-fpm:

user = www-data group = www-data

相关内容