LNMP 常见502问题汇总

我们在配置LNMP时,总是会遇到502的问题,不管是在浏览器中访问还是使用curl命令,很容易就出现

了“502 Bad Gateway”,那么出错的原因是什么,有该如何解决呢。笔者根据经验总结了一下。

错误一:配置出错

我们先来介绍一下LNMP环境,顾名思义,LNMP环境是由nginx、mysql、php组成的,然而nginx的所

属用户与组均是php-fpm,那如何将nginx与php联系起来呢?这里就有了两种模式,一种是套接字模

式,另一种是 tcp/ip 形式(或者叫 ip:port 形式)。

我们在配置nginx的虚拟主机时,配置文件中有这么一段:

location ~ \.php$ {

include fastcgi_params;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

}

请注意这里这段配置文件的正数第三行,这里笔者用的就是 ip:port 的形式,那什么时候该用哪种呢?应

该说两种皆可。我们一般默认的是套接字模式,就是通过一个 socket 文件来连接,而默认的socket文件

目录就是/tmp/目录下,所以 fastcgi_pass 后面的socket文件路径一定要写对,不然一定会502!!

如果我们没有生成在指定目录下没有生成  .socket文件怎么办呢?这时候我们就需要将 fastcgi_pass 改

成 ip : port 的形式,注意如果单单改这个配置文件中的内容依然502,我们同样需要改另一个配置文件

的内容,即php的配置文件:/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 = 127.0.0.1:9000

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

将配置文件中的listen部分同样也要改为 ip : port 的形式,这样 nginx 与 php 才能联系起来,然后重新

加载 nginx : /etc/init.d/nginx  reload

总而一句话:这两个地方的形式必须一样,不然会出错。

错误二:权限

我们启动nginx之后,可以查看一下nginx 的进程:ps  aux  |grep  nginx

这时我们发现,nginx 的工作进程的属主与属组均为 nobody

所已为了解决这样的权限问题导致的502错误,我们需要在配置文件 /usr/local/php/etc/php-fpm.conf

中加两句:

listen.owner = nobody

listen.group = nobody

然后重新加载nginx

错误三:资源耗尽

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 服务,pm.max_children可以设置为 150,尽量不要超

过该数值, 8G 内存可用设置为 300,以此类推。

常见错误就是上面几种,如不能解决,请参考错误日志,配置文件nginx.conf中的error_log,调整其级

别,有助于我们看到更多的错误。

时间: 2024-08-04 00:45:16

LNMP 常见502问题汇总的相关文章

LNMP(nginx防盗链,访问控制,解析php相关配置,Nginx代理,常见502问题)

一.nginx防盗链 nginx防盗链: [[email protected] ~]# vim /usr/local/nginx/conf/vhost/test.com.conf   添加以下内容 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { expires 7d; valid_referers none blocked server_names  *.test.com ;      

机器学习常见算法分类汇总

机器学习常见算法分类汇总 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.这里 IT 经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性. 学习方式 根据数据类型的不同,对一个问题的建模有不同的方式.在机器学习或者人工智能领域,人们首先会考虑算法的学习

使用LNMP常见问题解答

使用LNMP常见问题解答 一.LNMP的安装过程详解,注:绿色文字为注释,实际使用过程中没有. ##先要下载,并根据不同系统进行安装: wget -c http://soft.vpser.net/lnmp/lnmp1.0.tar.gz tar zxvf lnmp1.0.tar.gz cd lnmp1.0 ./centos.sh #如果您是其它系统,则命令改为:./ubuntu.sh 或 debian.sh 以上为下载及进入安装过程,以下为安装前简易设置,切记输入个其它域名及牢记mysql密码:

Python二十九个常见的脚本汇总!

1.冒泡排序2.计算x的n次方的方法3.计算aa + bb + c*c + --4.计算阶乘 n!5.列出当前目录下的所有文件和目录名6.把一个list中所有的字符串变成小写:7.输出某个路径下的所有文件和文件夹的路径8.输出某个路径及其子目录下的所有文件路径9.输出某个路径及其子目录下所有以.html为后缀的文件10.把原字典的键值对颠倒并生产新的字典Python三十个常见的脚本汇总 11.打印九九乘法表通过指定end参数的值,可以取消在末尾输出回车符,实现不换行. 12.替换列表中所有的3为

nginx的502错误及常见解决方法汇总

nginx以其高性能以及对物理计算资源的高密度利用,展示了较apache更为优越的性能,目前很多企业都 更加倾向于使用nginx架构的web服务,但是我们在安装配置与配置的过程中经常会遇到502的错误,那么 引起这些错误的原因有哪些,又有着哪些解决方法呢?我们以其来看一下 一.配置文件出错 我们在搭建LNMP环境的时候,尤其要编译php和nginx,悉心的人会发现,这里编译php与LAMP环境中编译 的php的方式不一样,并没有像在apache的基础上编译php那样要在编译参数中添加与nginx

Nginx+PHP (Fastcgi)常见502和504解决思路分享

公司一台测试服务器,最近出现504和502问题:(环境LNMP,php编译安装,Fastcgi模式),问题不难解决,但这里分享一下自己的排查思路和处理问题的方式. 504 Gateway Time-out,nginx 502 bad gateway 一.分析问题: Nginx 504 Gateway Time-out的含义是没有请求到可以执行的PHP-CGI. Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于读取资源的等没有执行完毕而导致PHP-CGI进程

STM32F1_常见外设资源汇总

前言 STM32F1系列芯片算是在STM32中最早的一系列,在实际生活中应用的比较广泛.因此,汇总一下STM32F1系列芯片常见片内资源,每一篇文章把重点提出来讲解,并提供软件源代码工程. 汇总常见资源:基本IO.定时器TIM.串口USART.ADC模数转换.DAC数模转换.SPI串行通信.EXIT外部中断.BKP备份数据.RTC闹钟SysTick系统滴答.WDG看门狗(独立+窗口).DMA传输数据.片内FLASH编程.FSMC读写外部SRAM.外部NorFlash操作等. 各个细节详情请查看下

常见排序算法汇总

                                           排序算法汇总 在笔试面试的过程中,常常会考察一下常见的几种排序算法,包括冒泡排序,选择排序,插入排序,希尔排序,快速排序,堆排序归并排序等7种排序算法,下面将分别进行讲解: 1.冒泡排序 所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法.具体方法是,相邻数值两两交换.从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调):如果其与我们的期望一致,则不用交

Quartus II 中 Verilog 常见警告/错误汇总

Verilog 常见错误汇总 1.Found clock-sensitive change during active clock edge at time <time> on register "<name>" 原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化.而时钟敏感信号是不能在时钟边沿变化的.其后果为导致结果不正确. 措施:编辑vector source file 2.Verilog HD