zoukankan      html  css  js  c++  java
  • LNMP中常见的502错误及处理方法

    LNMP配置完成以后,经常遇到502 Bad Gateway的错误提示,究其原因多为2种。下面对这两方面的问题进行分析:

    1. 配置方面的错误

    配置错误中,或者因为php-fpm找不到路径,或者是权限问题。

      【1】先对路径进行分析: 在Nginx的配置文件中,有这么一段:

    # vim /usr/local/nginx/conf/nginx.conf
    
    location ~ .php$ {
    include fastcgi_params;
    fastcgi_pass unix:/tmp/php-fcgi.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    } 
    

    如果开启了虚拟主机配置文件目录,那么这段配置多放在/usr/local/nginx/conf/vhosts目录下的以域名为名的conf文件里面。注意里面的两个地方:

    fastcgi_pass unix:/tmp/php-fcgi.sock;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    

    第一行里面,fastcgi_pass是php-fpm的监听方式,可以用下面的命令获得:

    # netstat -lnp |grep php-fpm
    

    如果得到的php-fpm的监听方式是socket的形式,就按照上面的格式配置就可以。若在php-fpm.conf中,我们对php-fpm的监听配置是下面这样:

    Listen = 127.0.0.1:9000
    

    那么,我们相应的Nginx的配置就应该是:

    fastcgi_pass 127.0.0.1:9000;
    

    第二行里面,配置的是Nginx的网页文件路径,配置正确后就不会提示502了。

      【2】 权限的问题

    # cat /usr/local/nginx/conf/nginx.conf
    ## 找到我们配置的第一行:
    user nobody nobody;
    

    那么,这就是问题的关键了。如果要访问内容的权限足够,需要在php-fpm.conf配置里面,[www]模块下加入如下配置:

    [www]
    listen = /tmp/www.sock
    user = php-fpm
    group = php-fpm
    listen.owner = nobody
    listen.group = nobody
    

    如此,权限统一,访问不受限制,就不会显示502!

    2. 资源耗尽

    LNMP架构处理php是直接调取后端的php-fpm服务, 如果nginx的请求量高,而又没有给php-fpm配置足够子进程,那么总有php-fpm耗尽的时候;耗尽后,nginx找不到php-fpm,导致502。
    解决方案:

    增加php-fpm.conf中的pm.max_children数值。

    但服务器的资源也有限。根据经验,4G内存机器只跑php-fpm和nginx,不跑mysql服务,pm.max_children最高可以设置为150,尽量不要超过该数值,8G内存可用设置为300,以此类推。
    其他情况引起的502就极少了。如果出现,借助错误日志来排查。错误日志还可定义级别,默认为crit;该级别最严谨,记录日志也最少;有时候一些小问题发现不了,会把日志级别调整一下,如“error_log /usr/local/nginx/logs/nginx_error.log debug;”。这样显示的日志就会有很多。不要忘记调试完后将级别改回crit,否则error_log会撑爆磁盘!

  • 相关阅读:
    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录3
    19c上ADG主库sys密码修改会影响备库同步吗?
    MySQL中sql_mode的设置
    [自制工具]批量后台更新统计信息
    openssl加解密实战
    [自制工具]简便易用的ADDM报告生成工具
    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录2
    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录1
    Windows11如何设置经典的右键菜单
    MVC3过滤器实现多语言
  • 原文地址:https://www.cnblogs.com/llius/p/5198570.html
Copyright © 2011-2022 走看看