文档章节

nginx 502

t
 tystys
发布于 2017/07/23 22:17
字数 1029
阅读 8
收藏 0

 

通常是由于前段服务器the frontend webserver--尝试连接 backend application handlers后端服务器 breakdown时

以下是执行过程|执行时又可能出现502|超时等

 

当然,配置错误也会爆502        

取决于不同的应用服务器--诊断502错误方案亦不同 

常见问题

PHP-FastCGI    (PHP-FPM)   NGINX.  

php-fpm未运行--502

php-fpm 无法启动

nginx无法和php-fpm通讯

nginx 超时

php-fpm超时 

PHP-FPM未运行

 ps +grep     查看是否运行php-fpm

 

root@nginx0:/var/log/nginx# ps aux | grep php
root     29191  0.0  1.7 133628 18108 ?        Ss   20:41   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 29193  0.0  0.5 133628  5956 ?        S    20:41   0:00 php-fpm: pool www
www-data 29194  0.0  0.5 133628  5956 ?        S    20:41   0:00 php-fpm: pool www

 

未运行|

则运行

init system command
SysV service php5-fpm start
Systemd systemctl start php5-fpm.service
init.d /etc/init.d/php5-fpm start
Upstart

initctl start php5-fpm

 

 

PHP-FPM启动失败 

如果无法启动--发起一个php页面的请求---tail nginx 错误日志 

www-data@nginx0:/var/log/nginx$ tail /var/log/nginx/error.log
2016/09/19 20:39:30 [crit] 28751#28751: *9 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.0.2.101, server: example.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.0.2.255"
2016/09/19 20:39:50 [crit] 28751#28751: *9 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.0.2.101, server: example.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.0.2.255"
2016/09/20 16:39:44 [crit] 28751#28751: *33 connect() to unix:/var/run/php5-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.0.2.101, server: example.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.0.2.255"

  PHP-FPM 启动失败几乎百分百是配置问题

www-data@nginx0:/var/log/nginx$ tail /var/log/syslog
Sep 20 16:39:10 nginx0 kernel: [77167.468712] init: php5-fpm main process (3551) terminated with status 78
Sep 20 16:39:11 nginx0 kernel: [77167.468727] init: php5-fpm main process ended, respawning

 

www-data@nginx0:/var/log/nginx$ cat /usr/include/sysexits.h | grep 78
#define EX_CONFIG       78      /* configuration error */

  PHP-FPM配置错误

  PHP-FPM 配置问题

  fat fingers, or a genuine configuration conflict配置冲突.

首先确认保证php-fpm所在用户组对通讯目录是有写权限的.

Next, verify that the socket is being created with the appropriate user permissions.

In particular, check your worker pool configurations (in /etc/php5/fpm/pool.d/*.conf)

and verify:

  • socket path
  • process owner/group
  • listen.owner/listen.group
user = www-data
group = www-dat

listen = /var/run/php5-fpm.sock

listen.owner = www-data
listen.group = www-data

Notice the typo in the configuration file above: group = www-dat should read group = www-data.

Fixing this typo and restarting the PHP-FPM daemon resolves the issue.

NGINX 通讯PHP-FPM失败

 

如果PHP-FPM和你的application应用都没问题 are working properly, 那么问题可能出现在NGINX’s 配置上.  (/etc/nginx/sites-enabled/default, by default) and verify that the fastcgi_pass directive matches the socket (listen) in your PHP-FPM worker pool configuration.

[...]
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_nam$
                include fastcgi_params;

        }

配置更改后记得重启NGINX.

 

 

NGINX超时

如果后端应用正在运行,却出现了502,问题多数出现在正在请求|正在访问的应用上尤其应用没有设置时间限制,而nginx是有时间限制的,超出配置的时间,是不再等待的 

 不同的应用下,执行时间大于30秒的可能会被执行,这时就需要增加ngixn最大超时时间,

如果程序执行时间是异常导致的超时,就需要优化了, 

 配置最大超时时间--首先打开PHP-FPM’s configuration file (/etc/php5/fpm/php.ini),

找到

max_execution_time = 30

然后 打开/etc/nginx/nginx.conf),

添加如下内容到http模块

add the following within the http block to increase timeout windows, buffers, and buffer sizes:

http { 
...

fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}

最后重启reload NGINX and PHP-FPM:

PHP-FPM:

init system command
SysV service php5-fpm reload
Systemd systemctl reload php5-fpm.service
init.d /etc/init.d/php5-fpm reload
Upstart initctl reload php5-fpm

NGINX:

init system command
SysV service nginx reload
Systemd systemctl reload nginx.service
init.d /etc/init.d/nginx reload
Upstart initctl reload nginx

PHP-FPM is timing out

有时,增加超时时间只是临时解决方案。

更多的应该是去找到你的应用程序,分析,优化,降低执行时间,  

例如,程序 在查询数据库时可能花费了大量的时间,直接超过了最大执行时间。  

如果nginx的执行时间足够高,临时解决方案是把php执行时间 set_time_limit()打开

当然 --长期的解决方案--还是去优化程序

 

© 著作权归作者所有

共有 人打赏支持
t
粉丝 2
博文 72
码字总数 82272
作品 0
Nginx防盗链 Nginx访问控制 Nginx解析php相关配置 Nginx代理

12.13 Nginx防盗链 cd /usr/local/nginx/conf/vhost vi test.com.conf 将以上内容复制到下图位置 测试,成功 前提data/wwwroot/test.com目录下要有1.gif 12.14 Nginx访问控制 cd /usr/local/...

cwliang
03/15
0
0
修改了nginx的配置,访问域名报502

我接手了一个flask+gunicorn+nginx项目,它分布在两台服务器虚拟机上,我改了一台虚拟机的nginx下的nginx.conf里的网关超时,然后nginx -s reload,然后就开始报502了,直接访问它的域名也是5...

W-Tom
07/12
0
0
修改了nginx的配置,访问域名报502

我接手了一个flask+gunicorn+nginx项目,它分布在两台服务器虚拟机上,我改了一台虚拟机的nginx下的nginx.conf里的网关超时,然后nginx -s reload,然后就开始报502了,直接访问它的域名也是5...

W-Tom
07/12
0
0
解决:502 bad gateway

502 Bad Gateway服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 解决办法是:再刷新一下网页或清理一下电脑的缓冲文件在打开你想打开的网页就好了....

Junn
2013/07/28
0
0
Nginx 502 Bad Gateway 错误的原因及解决方法

刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作。然后网上寻找了下答案, 把一些原因及解决方法汇总一下,以防生产环境下的502![在此输入图片描述]...

zhouyuan24
2013/03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

es6

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'};console.l...

不负好时光
18分钟前
0
0
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

全部原谅
20分钟前
0
0
web.xml容器加载顺序

容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

Aeroever
22分钟前
1
0
Docker容器日志查看与清理

1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日...

muzi1994
23分钟前
0
0
J2Cache 和普通缓存框架有何不同,它解决了什么问题?

不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache、Caffeine 、Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!...

红薯
26分钟前
456
14

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部