nginx php-fpm 502 网关错误
nginx php-fpm 502 Bad Gateway
我 运行 Ubuntu 服务器 20.04 使用 Ired 邮件和 2 个网站非常成功,其中一个使用 WordPress。
我想安装 Nextcloud,为此我必须重新安装 php-fpm 以生成 php7.4-fpm.sock。在这个 Nextcloud 工作之后,但我的其他网站停止工作并出现错误“502 Bad Gateway”。
所以至少可以说,我很困惑!
我按照这篇文章安装了 Nextcloud 并按照说明设置了启用站点的 .conf 文件:https://www.linuxbabe.com/ubuntu/install-nextcloud-ubuntu-20-04-nginx-lemp-stack/amp
我想我明白 .conf 文件过去监听 127.0.0.1:XXXX 现在监听 php7.4-fpm.sock?
这是我在重新安装 php-fpm 后为我的网站整理的 .conf 文件:
#
# Note: This file must be loaded before other virtual host config files,
#
# HTTPS
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name SOMEWEBSITE www.SOMEWEBSITE;
error_log /var/log/nginx/localhost.error_log info;
root /var/www/SOMEWEBSITE/html;
index index.php index.html;
include /etc/nginx/templates/misc.tmpl;
include /etc/nginx/templates/ssl.tmpl;
include /etc/nginx/templates/iredadmin.tmpl;
include /etc/nginx/templates/roundcube.tmpl;
include /etc/nginx/templates/sogo.tmpl;
include /etc/nginx/templates/netdata.tmpl;
include /etc/nginx/templates/php-catchall.tmpl;
include /etc/nginx/templates/stub_status.tmpl;
location / {
try_files $uri $uri/ /index.php?q=$uri$args;
}
# PHP handling
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
ssl_certificate /etc/letsencrypt/live/SOMEWEBSITE/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/SOMEWEBSITE/privkey.pem; # managed by Certbot
}
# Redirect http to https
server {
listen 80;
listen [::]:80;
server_name SOMEWEBSITE www.SOMEWEBSITE;
return 301 https://$host$request_uri;
}
我检查了 php7.4-fpm.sock
的文件权限
ll /var/run/php/ | grep php
-rw-r--r-- 1 root root 3 May 22 21:13 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 May 22 21:13 php7.4-fpm.sock=
lrwxrwxrwx 1 root root 30 May 22 21:13 php-fpm.sock -> /etc/alternatives/php-fpm.sock=
我觉得还可以。
这是日志文件:
2021/05/23 20:32:52 [error] 43596#43596: *305 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xxx.xxx, server: SOMEWEBSITE, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9999", host: "SOMEWEBSITE"
2021/05/23 20:32:53 [info] 43596#43596: *305 client xx.xx.xxx.xxx closed keepalive connection
有什么想法吗?需要更多信息吗?提前感谢您的关注。
PHP-FPM可以使用两种方法来监听接受fastcgi请求。使用 TCP 套接字或 Unix 套接字。
你可以在php-fpm配置中指定它,在Ubuntu中配置在/etc/php/7.4/fpm/pool.d/www.conf
中并检查listen
配置。
如果你想使用unix socket,使用下面的配置。
listen = /run/php/php7.4-fpm.sock
对于 TCP 套接字。
listen = 127.0.0.1:9000
接下来在nginx中可以根据fpm配置指定fastcgi_pass
。如果您使用 Unix 套接字,您的所有网站,包括 Nextcloud 都必须使用 Unix 套接字。
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
如果您使用 TCP 套接字,则必须更改 nginx 配置,以便 Nextcloud 从 TCP 套接字传递。
fastcgi_pass 127.0.0.1:9000;
我 运行 Ubuntu 服务器 20.04 使用 Ired 邮件和 2 个网站非常成功,其中一个使用 WordPress。
我想安装 Nextcloud,为此我必须重新安装 php-fpm 以生成 php7.4-fpm.sock。在这个 Nextcloud 工作之后,但我的其他网站停止工作并出现错误“502 Bad Gateway”。
所以至少可以说,我很困惑!
我按照这篇文章安装了 Nextcloud 并按照说明设置了启用站点的 .conf 文件:https://www.linuxbabe.com/ubuntu/install-nextcloud-ubuntu-20-04-nginx-lemp-stack/amp
我想我明白 .conf 文件过去监听 127.0.0.1:XXXX 现在监听 php7.4-fpm.sock?
这是我在重新安装 php-fpm 后为我的网站整理的 .conf 文件:
#
# Note: This file must be loaded before other virtual host config files,
#
# HTTPS
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name SOMEWEBSITE www.SOMEWEBSITE;
error_log /var/log/nginx/localhost.error_log info;
root /var/www/SOMEWEBSITE/html;
index index.php index.html;
include /etc/nginx/templates/misc.tmpl;
include /etc/nginx/templates/ssl.tmpl;
include /etc/nginx/templates/iredadmin.tmpl;
include /etc/nginx/templates/roundcube.tmpl;
include /etc/nginx/templates/sogo.tmpl;
include /etc/nginx/templates/netdata.tmpl;
include /etc/nginx/templates/php-catchall.tmpl;
include /etc/nginx/templates/stub_status.tmpl;
location / {
try_files $uri $uri/ /index.php?q=$uri$args;
}
# PHP handling
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
ssl_certificate /etc/letsencrypt/live/SOMEWEBSITE/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/SOMEWEBSITE/privkey.pem; # managed by Certbot
}
# Redirect http to https
server {
listen 80;
listen [::]:80;
server_name SOMEWEBSITE www.SOMEWEBSITE;
return 301 https://$host$request_uri;
}
我检查了 php7.4-fpm.sock
的文件权限ll /var/run/php/ | grep php
-rw-r--r-- 1 root root 3 May 22 21:13 php7.4-fpm.pid
srw-rw---- 1 www-data www-data 0 May 22 21:13 php7.4-fpm.sock=
lrwxrwxrwx 1 root root 30 May 22 21:13 php-fpm.sock -> /etc/alternatives/php-fpm.sock=
我觉得还可以。
这是日志文件:
2021/05/23 20:32:52 [error] 43596#43596: *305 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xxx.xxx, server: SOMEWEBSITE, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9999", host: "SOMEWEBSITE"
2021/05/23 20:32:53 [info] 43596#43596: *305 client xx.xx.xxx.xxx closed keepalive connection
有什么想法吗?需要更多信息吗?提前感谢您的关注。
PHP-FPM可以使用两种方法来监听接受fastcgi请求。使用 TCP 套接字或 Unix 套接字。
你可以在php-fpm配置中指定它,在Ubuntu中配置在/etc/php/7.4/fpm/pool.d/www.conf
中并检查listen
配置。
如果你想使用unix socket,使用下面的配置。
listen = /run/php/php7.4-fpm.sock
对于 TCP 套接字。
listen = 127.0.0.1:9000
接下来在nginx中可以根据fpm配置指定fastcgi_pass
。如果您使用 Unix 套接字,您的所有网站,包括 Nextcloud 都必须使用 Unix 套接字。
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
如果您使用 TCP 套接字,则必须更改 nginx 配置,以便 Nextcloud 从 TCP 套接字传递。
fastcgi_pass 127.0.0.1:9000;