nginx502原因是什么?nginx出现502如何解决?

有很多的人一定都遇到过nginx502的情况,那么出现nginx502的原因究竟是什么呢?出现了这样的情况又应该如何去解决呢?一起来详细的了解一下吧。

一、nginx502原因和解决方法

首先我们来看一下出现nginx502的原因,以及对于这种情况的解决方法。

1、配置错误

这方面的话主要就是因为nginx找不到了php-fpm,所以就出现了502,通常来说的话,就是fastcgi_pass后面的路径配置出现了错误,后面可以是ip:port又或者是socket。

2、资源耗尽

这里的资源耗尽指的就是,lnmp架构在对php进行处理的时候,nginx它直接就调取了后端的php-fpm服务。

假如,nginx的请求量偏高,但是又没有给php-fpm配置足够的子进程,这样的话,就会导致php-fpm资源耗尽。

那么一旦出现了资源耗尽的情况,nginx找不到了php-fpm,就会出现502错误了。

那么遇上了这样的情况,应该如何来进行解决呢?

首先要去调整php-fpm.conf当中pm.max_children数值,让它增加,但是,这里的话要注意了,你不可以无限的进行增加,因为资源是相对有限的,一般的话,4G内存机器假如是跑php-fpm和nginx,不跑mysql,可以设置成150,8G就是300,以此来进行类推。

当然,nginx502原因除去上面两种原因之外,还有其他的原因。

这里的话,我们可以借助nginx的错误日志来进行排查vim /usr/local/nginx/logs/nginx_error.log。

除此之外,还可以给日志定义级别vim/usr/local/nginx/conf/nginx.conf 找到error_log,默认是crit最严谨的就可以了。

当然,也可以改成debug显示的信息最全面,可是,这样非常容易会撑爆磁盘。

首先要让浏览器进行访问,对nginx的配置文件进行修改。

[root @wqslinux~]# vim / usr / local / nginx / conf / vhosts / 111. conf
server
{
    listen 80;
    server_name www .111.com; //域名地址
    index index.html index.htm index.php;
    root / data / www / ;
    location~.php$
    {
        include fastcgi_params;
        fastcgi_pass unix: /tmp/www.sock; //修改sock
        #
        fastcgi_pass 127.0 .0 .1: 9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME / data / www$fastcgi_script_name;
    }
}

检查语法是不是正常的。

[root @wqslinux~]# / usr / local / nginx / sbin / nginx - t

重新加载配置文件。

[root @wqslinux~]# / usr / local / nginx / sbin / nginx - s reload[root @wqslinux~]# / etc / init.d / nginx reload

检查nginx是那个用户跑的。

[root @wqslinux~]# ps aux | grep nginx

对php-fpm文件进行编辑,在这个php-fpm文件里面设置nginx的用户主跟组,这样的话才不会说显示502了。

[root @wqslinux~]# vim / usr / local / php / etc / php - fpm.conf[global]
pid = /usr/local / php /
    var / run / php - fpm.pid
error_log = /usr/local / php /
    var / log / php - fpm.log[www]
listen = /tmp/www.sock
user = php - fpm
group = php - fpm
listen.owner = nobody //定义属主
listen.group = nobody //定义属组
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

配置完成之后,重启php-fpm。

[root @wqslinux~]# / etc / init.d / php - fpm restart
listen.owner = nobody //定义属主
listen.group = nobody //定义属组

这两个配置就是定义socket的属主和属组是谁。

除了这个以外,还有一种方式。

这样的话,nobody也能够有读取权限了。

好啦,上面就是对于nginx502原因以及解决方法的介绍了,你都了解了吗?

更多相关常见问题,请继续关注奇Q工具网来进行了解吧,希望上面的文章可以对你有所帮助呢。

推荐阅读:

nginx配置多个server有何作用?如何实现?

nginx代理,nginx正向代理是指什么?

nginx配置最全的详解有哪些?