服务器恢复后 502 Bad Gateway Nginx
502 Bad Gateway Nginx after server restore
所以我有一个 Ubuntu 服务器,我正试图从备份中恢复它。当一个虚拟 PHP 版本页面时,我得到 502 Bad Gateway。我尝试过什么来修复它?很多事情,包括这个相关问题的答案 - nginx 502 bad gateway
这是我的默认配置 Ubuntu
server {
listen 80;
# listen [::]:81 ipv6only=on default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name localhost;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ {
expires max;
}
location / {
try_files $uri $uri.php $uri.php/$args /index.php?q=$uri&$args $uri/ =404;
index index.php index.html index.htm;
rewrite ^(.*)$ /.php;
}
location /phpmyadmin {
index index.php;
try_files $uri $uri/ =404;
auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/pma_pass;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
编辑:
这是我认为是日志的相关部分
2017/08/11 13:18:13 [error] 27759#0: *270 connect() failed (111: Connection refused) while connecting to upstream, client: 66.61.18.112, server: domain.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8080/favicon.ico", host: "[IP ADDRESS]", referrer: "http://[IP ADDRESS]/phpmyadmin/index.php"
编辑 2:
这是我 运行 ps aux | grep php-fpm
:
时的结果
mre 21685 0.0 0.0 11756 932 pts/0 S+ 10:42 0:00 grep --color=auto php-fpm
root 32721 0.0 1.0 269300 11168 ? Ss Aug11 0:30 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 32724 0.0 0.4 269300 4540 ? S Aug11 0:00 php-fpm: pool www
www-data 32725 0.0 0.4 269300 4540 ? S Aug11 0:00 php-fpm: pool www
编辑 3:
这是我的 php-fpm.conf
中未注释的部分
[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /var/run/php5-fpm.pid
; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = /var/log/php5-fpm.log
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; To configure the pools it is recommended to have one .conf file per
; pool in the following directory:
include=/etc/php5/fpm/pool.d/*.conf
编辑 4:
这是我的 www.conf 中未注释的内容:
listen = 127.0.0.1:9000
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
编辑 5:
我尝试去 index.php:
后我的 nginx 日志
[error] 29393#0: *23 connect() failed (111: Connection refused) while connecting to upstream, client: [Computer IP Address], server: [Subdomain.domain.com], request: "GET /favicon.ico HTTP/1.1", upstream:"http://127.0.0.1:8080/favicon.ico", host: [Server IP], referrer: "http://[Server IP]/index.php"
尝试替换
fastcgi_pass unix:/var/run/php5-fpm.sock;
在你的 nginx 配置中
fastcgi_pass 127.0.0.1:9000;
因为如果您的 PHP-FPM 配置使用 TCP 而不是套接字(没关系)。
所以我检查了我的 nginx 配置并发现了这些行:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
然后我去了 /etc/nginx/conf.d/*.conf
并在 servers.conf
文件中看到了我计划使用但不会再使用的子域的配置,所以我删除了它。这是问题的主要部分,因为 nginx 首先查看此配置,这就是错误包含此子域的原因。
至于 php 问题,我将配置切换为 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
,这似乎解决了问题。
您必须更改此行
来自:
listen = 127.0.0.1:9000
至:
listen = /var/run/php5-fpm.sock
在您的 www.conf 文件中
别忘了重启 php。
解释:
如果你看看你的nginx虚拟主机fastcgi_pass参数
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
您会看到您将 php 文件的处理指向 php5-fpm 套接字,但在您的 www.conf 文件中 php 正在侦听端口 9000这就是为什么您应该将其更改为 /var/run/php5-fpm.sock
所以我有一个 Ubuntu 服务器,我正试图从备份中恢复它。当一个虚拟 PHP 版本页面时,我得到 502 Bad Gateway。我尝试过什么来修复它?很多事情,包括这个相关问题的答案 - nginx 502 bad gateway
这是我的默认配置 Ubuntu
server {
listen 80;
# listen [::]:81 ipv6only=on default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name localhost;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ {
expires max;
}
location / {
try_files $uri $uri.php $uri.php/$args /index.php?q=$uri&$args $uri/ =404;
index index.php index.html index.htm;
rewrite ^(.*)$ /.php;
}
location /phpmyadmin {
index index.php;
try_files $uri $uri/ =404;
auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/pma_pass;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
编辑: 这是我认为是日志的相关部分
2017/08/11 13:18:13 [error] 27759#0: *270 connect() failed (111: Connection refused) while connecting to upstream, client: 66.61.18.112, server: domain.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8080/favicon.ico", host: "[IP ADDRESS]", referrer: "http://[IP ADDRESS]/phpmyadmin/index.php"
编辑 2:
这是我 运行 ps aux | grep php-fpm
:
mre 21685 0.0 0.0 11756 932 pts/0 S+ 10:42 0:00 grep --color=auto php-fpm
root 32721 0.0 1.0 269300 11168 ? Ss Aug11 0:30 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 32724 0.0 0.4 269300 4540 ? S Aug11 0:00 php-fpm: pool www
www-data 32725 0.0 0.4 269300 4540 ? S Aug11 0:00 php-fpm: pool www
编辑 3:
这是我的 php-fpm.conf
中未注释的部分[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /var/run/php5-fpm.pid
; Error log file
; If it's set to "syslog", log is sent to syslogd instead of being written
; in a local file.
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = /var/log/php5-fpm.log
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; To configure the pools it is recommended to have one .conf file per
; pool in the following directory:
include=/etc/php5/fpm/pool.d/*.conf
编辑 4:
这是我的 www.conf 中未注释的内容:
listen = 127.0.0.1:9000
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
编辑 5:
我尝试去 index.php:
后我的 nginx 日志[error] 29393#0: *23 connect() failed (111: Connection refused) while connecting to upstream, client: [Computer IP Address], server: [Subdomain.domain.com], request: "GET /favicon.ico HTTP/1.1", upstream:"http://127.0.0.1:8080/favicon.ico", host: [Server IP], referrer: "http://[Server IP]/index.php"
尝试替换
fastcgi_pass unix:/var/run/php5-fpm.sock;
在你的 nginx 配置中
fastcgi_pass 127.0.0.1:9000;
因为如果您的 PHP-FPM 配置使用 TCP 而不是套接字(没关系)。
所以我检查了我的 nginx 配置并发现了这些行:
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
然后我去了 /etc/nginx/conf.d/*.conf
并在 servers.conf
文件中看到了我计划使用但不会再使用的子域的配置,所以我删除了它。这是问题的主要部分,因为 nginx 首先查看此配置,这就是错误包含此子域的原因。
至于 php 问题,我将配置切换为 fastcgi_pass unix:/run/php/php7.0-fpm.sock;
,这似乎解决了问题。
您必须更改此行
来自:
listen = 127.0.0.1:9000
至:
listen = /var/run/php5-fpm.sock
在您的 www.conf 文件中
别忘了重启 php。
解释:
如果你看看你的nginx虚拟主机fastcgi_pass参数
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
您会看到您将 php 文件的处理指向 php5-fpm 套接字,但在您的 www.conf 文件中 php 正在侦听端口 9000这就是为什么您应该将其更改为 /var/run/php5-fpm.sock