• 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会撑爆磁盘!

  • 相关阅读:
    启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
    处理textarea的空格和换行
    微信内置页实现自动拨号到页面的功能
    兼容ie的渐变css
    H5压缩图片上传(FileReader +canvas)
    css样式写一个小三角
    js禁止选中图片和文字
    js解决浏览器打印自动分页的问题
    IE8透明度问题
    在css加载完毕后自动判断页面是否加入css或js文件
  • 原文地址:https://www.cnblogs.com/llius/p/5198570.html
Copyright © 2020-2023  润新知