配置
在我写任何其他东西之前,我想声明我已经检查了nginx 502坏网关和nginx PHP-FPM 502坏网关线程,不幸的是,这在这方面对我没有帮助。
这个问题似乎很常见:nginx或php fpm的错误配置可能导致502坏网关
错误,这是我一直无法解决的问题。请注意,即使在我转到我的域根目录时,也会出现这种情况,而不指定任何特定目录。
我正在运行一个AmazonEC2WebServer,启用了端口9000,打开了端口80,等等。
特别的问题是,我如何才能摆脱这个讨厌的错误?或者,更好的是,我如何才能让php5-fpm真正工作。
到目前为止我所做的尝试
大多数配置文件的一致编辑,特别是php-fpm.conf
和nginx.conf
。
i、 php fpm。形态
我添加了以下内容,但没有多大帮助:
;;;;;;;;;;;;;
; Fpm Start ;
;;;;;;;;;;;;;
;pm.start_servers = 20
;pm.min_spare_servers = 5
;pm.max_spare_servers = 35
现在,之后我尝试包括我的配置文件:
包括=/etc/php5/fpm/*. conf
这只会让我更难过。
完整配置
;;;;;;;;;;;;;;;;;;;;;
; FPM Configuration ;
;;;;;;;;;;;;;;;;;;;;;
; All relative paths in this configuration file are relative to PHP's install
; prefix (/usr). This prefix can be dynamicaly changed by using the
; '-p' argument from the command line.
; Include one or more files. If glob(3) exists, it is used to include a bunch of
; files from a glob(3) pattern. This directive can be used everywhere in the
; file.
; Relative path can also be used. They will be prefixed by:
; - the global prefix if it's been set (-p arguement)
; - /usr otherwise
;include=/etc/php5/fpm/*.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
[global]
; Pid file
; Note: the default prefix is /var
; Default Value: none
pid = /var/run/php5-fpm.pid
; Error log file
; Note: the default prefix is /var
; Default Value: log/php-fpm.log
error_log = /var/log/php5-fpm.log
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = notice
; If this number of child processes exit with SIGSEGV or SIGBUS within the time
; interval set by emergency_restart_interval then FPM will restart. A value
; of '0' means 'Off'.
; Default Value: 0
;emergency_restart_threshold = 0
; Interval of time used by emergency_restart_interval to determine when
; a graceful restart will be initiated. This can be useful to work around
; accidental corruptions in an accelerator's shared memory.
; Available Units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
emergency_restart_interval = 0
; Time limit for child processes to wait for a reaction on signals from master.
; Available units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
;process_control_timeout = 0
; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
; Default Value: yes
daemonize = no
;;;;;;;;;;;;;
; Fpm Start ;
;;;;;;;;;;;;;
;pm.start_servers = 20
;pm.min_spare_servers = 5
;pm.max_spare_servers = 35
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
; Multiple pools of child processes may be started with different listening
; ports and different management options. The name of the pool will be
; used in logs and stats. There is no limitation on the number of pools which
; FPM can handle. Your system will tell you anyway :)
; 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
二、nginx。形态
老实说,这个配置只是我访问过的几个网站的一小部分,但我可以告诉你,在502糟糕的网关业务之前,服务器运行良好(没有PHP working.Period.)。
问题主要在于某些事情非常非常错误。现在,当我尝试执行一个服务php5 fpm重启时,它挂在一个无限循环中,我猜这是什么,我甚至无法CTRL-C。
完整配置
user www-data;
worker_processes 1;
pid /var/run/nginx.pid;
events {
worker_connections 64;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush off;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
server {
listen 80;
server_name ec2-xx-xx-xx-xx.compute-x.amazonaws.com;
location ~ ^(.+\.php)(.*)$ {
root /home/wayvac/public;
fastcgi_pass unix:/var/run/php5-fpm.pid;
#fastcgi_pass 127.0.0.1:9000; #Un-comment this and comment "fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;" if you are not using php-fpm.
fastcgi_index index.php;
set $document_root2 $document_root;
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
if ($document_root2 ~ "^(.*\\\\).*?[\\\\|\/]\.\.\/(.*)$") { set $document_root2 $1$2; }
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root2$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root2$fastcgi_path_info;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $document_root2;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
root /home/wayvac/public;
index index.html index.htm index.php;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
# Some basic cache-control for static files to be sent to the browser
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
#include drop.conf;
#include php.conf;
}
}
我做了所有这些类似的调整,但有时我会(每天)收到501/502个错误。
这是我在/etc/php5/fpm/pool上的设置。d/www.conf以避免501和502 nginx错误…服务器具有16Gb RAM。此配置适用于8Gb RAM服务器,因此…
sudo nano /etc/php5/fpm/pool.d/www.conf
然后为设置以下值:
pm.max_children = 70
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 35
pm.max_requests = 500
更改后,重新启动php fpm
sudo service php-fpm restart
尝试设置这些值,它解决了快速cgi中的问题
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
如果有人发现这个页面遇到了我遇到的问题,我在这里找到了答案。
对于那些懒得点击并自己解决的人来说...;)
条件:
使用NGINX和PHP5.3的Ubuntu或Debian服务器运行良好,但将PHP升级到5.4会导致502个错误网关。查找在端口9000上运行的服务(通常运行netstat-lp
或类似版本)不会返回任何结果。
修复方法:
打开/etc/php5/fpm/pool。d/www.conf
并记下'listen'参数(在我的例子中,/var/run/php5 fpm.sock
):
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses on a
; specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /var/run/php5-fpm.sock
并将vhost中的fastcgi_pass变量替换为刚才注意到的位置。
所以这个示例symfony2配置(取自此处):
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
变成这样:
# pass the PHP scripts to FastCGI server at /var/run/php5-fpm.sock
location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
然后重启nginx:
sudo /etc/init.d/nginx restart
注:替换~^/(应用程序开发)\。php(/|$){
与~^/index\.php(/|$){
如果您不在SF2上**
希望这能为某人节省一点时间:)
编辑
当然,您可以更改listen=/var/run/php5 fpm。短袜
tolisten=127.0。
然后重新启动php5 fpm(这将使您不必更改VHOST),但您必须假设他们出于某种原因将php5 fpm更改为通过套接字运行,而不是侦听端口9000。/etc/php5/fpm/pool中的0.1:9000
。d/www.conf
编辑2
如果您仍然遇到502错误,请参阅此答案。
我用Ired邮件和两个网站成功地运行了Ubuntu服务器20.04,其中一个是WordPress。 我想安装Nextcloud,为此我必须重新安装php fpm以生成php7。4-fpm。短袜在这之后,Nextcloud工作了,但是我的其他网站停止了工作,出现了错误“502坏网关”。 所以至少可以说,我很困惑! 我根据本文安装了Nextcloud并设置了启用的站点。符合说明的conf文件:http
我一直在努力解决Nginx获得502坏网关的问题。 最困难的是,日志对此几乎毫无用处。 我使用的是VueJS,因此请求/响应更像是REST体系结构。 它目前正在做的只是试图返回公司信息,但我得到了一个网关错误。问题是,这完全是随机的。 (注意:CORS错误是由于502坏网关而发生的) 它只会偶尔发生,但不会一直发生。当我把请求通过一个铬扩展称为Restlet客户端工作非常好。 回顾Nginx错误,
我有一个基于php和nginx图像的web应用程序...一切都很好,直到我在PHP配置下设置了一个命令: docker撰写。yml 这是我的默认。形态 这是我的supervisord.conf nginx日志显示我: nginx|u 1 | 2018/10/02 00:42:36[错误]11#11:1 connect()在连接到上游时失败(111:连接被拒绝),客户端:172.23。0.1,服务器
我真的希望你们能帮我。我在设置ssl的不同指南中迷失了方向。 当我尝试访问我的站点时,我只得到了。普通的老nginx工作得很好,没有强制ssl的“简单”ssl也工作得很好。 这是我的配置文件。 default.conf letsencrypt.conf ssl。形态
我们目前正在AmazonEC2上运行nginx背后的PHP-FPM。站点将停止响应,并在每次高负载时向客户端输出502坏网关。 这是php fpm错误的日志。日志 [25-Feb-2014 10:29:50]警告:[pool www]服务器达到pm.max_children设置(14),考虑提高它 [25-Feb-2014 12:23:11]警告:[池www]child 2029在启动8736.0
我正在编写PHP,MySQL 知道我做错了什么吗? phpinfo正在工作 /log/nginx/access.log /log/virtualhost/error.log /log/php-fpm.log 我的Nginx conf /usr/local/etc/nginx/nginx.conf 我的Nginx虚拟服务器conf/usr/local/etc/Nginx/sites availabl