我们在配置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,调整其级别,有助于我们看到更多的错误。

php curl 502 bad gateway,LNMP 常见502 Bad Gateway问题汇总相关推荐

  1. lnmp 升级php后 502 bad gateway,LNMP出现502 bad gateway的解决

    问题:最近的抢购有点火,到点抢购的时候网站就会出现502 bad gateway错误 顶不住消费者的压力. LNMP 架构 伤..... 之前php-fpm配置: 单个php-fpm实例,使用sock ...

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

    一.nginx防盗链 nginx防盗链: [root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf   添加以下内容 location ...

  3. 3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶“三宗罪”|常见bug(错误)汇总

    3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶"三宗罪"|常见bug(错误)汇总 讲解视频内容请移步Bilibili: https:/ ...

  4. java字符串笔试题_五道Java常见笔试题及答案汇总

    1.String和StringBuffer的区别? 答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数 ...

  5. mt4软件较稳定的交易商服务器地址,外汇MetaTrader 4 常见交易商服务器ip地址汇总...

    转自 http://blog.2forex.cn/sy_binbin/2569.html 常见交易商服务器ip地址汇总: 诺德外汇nordfx NordGroupInv-Demo 78.140.130 ...

  6. 常见的数学建模比赛汇总(参考资料)

    常见的数学建模比赛汇总(参考资料) 1.美国数学建模竞赛(MCM/ICM) 简介 美国大学生数学建模竞赛(MCM/ICM)由美国数学及其应用联合会主办,是唯一的国际性数学建模竞赛,也是世界范围内最具影 ...

  7. 常见堡垒机小知识汇总-行云管家

    为了保障企业IT资产安全,越来越多的企业选择购买堡垒机,但他们对于堡垒机相关知识不清楚,今天我们小编就给大家汇总了部分,希望可以帮到大家. 常见堡垒机小知识汇总 堡垒机是硬件还是软件? 目前市面上堡垒 ...

  8. 常见车规级芯片汇总 ---高通820A、高通8155P、高通8195 和 特斯拉HW3.0芯片

    常见车规级芯片汇总 ---高通820A.高通8155P.高通8195 和 特斯拉HW3.0芯片 参考链接:https://blog.csdn.net/weixin_44124323/article/d ...

  9. Origin: 常见图形参数设置(汇总篇)

    Origin: 常见图形参数设置(汇总篇) (一)坐标轴的设置 1. 坐标轴刻度的调整 2. 坐标轴网格线的设置 3. 坐标轴重叠及特殊刻度线设置 (二)图例的设置 1. 图例的调整 2. 图例横向展 ...

最新文章

  1. 基于OpenCV实战的图像处理:色度分割
  2. mysql数据库引擎博客_2、MySQL常见数据库引擎及比较?
  3. python3 导入自定义函数
  4. Git 代码防丢指南
  5. 独立成分分析 ( ICA ) 与主成分分析 ( PCA )再解析
  6. tomcat启动时错误:Cannot rename original file to *.tomcat-users.xml.old
  7. 方向盘左右能摇动_学车这么久了,你还不会打方向盘呢?
  8. sql-bench mysql_MySQL性能测试(一)——RHEL 7.1, MySQL 5.6.25, sql-bench
  9. 字节跳动宣布取消大小周;淘宝、支付宝等阿里系App取消开屏广告;Python 3.10 beta 4 发布|极客头条...
  10. 物联网时代,安全该如何加固?
  11. JVM(一)内存分配
  12. mysql数据库引擎事务_代码配置都没问题,为什么事务不回滚(了解Mysql数据库引擎)...
  13. JQ实现图片预览(轮播,放大缩小,拖拽,ajax请求,旋转)
  14. 抗渗等级p6是什么意思_抗渗等级P6什么意思?
  15. Matlab如何删除矩阵中的零元素,重新整理不等行的矩阵
  16. 使用电容触摸屏做一个画板--原理(一)
  17. c语言 将结构体放在flash,stm32的内部flash读写操作(含结构体的保存)
  18. 使用python读取网络视频流或者本地视频进行RTMP流的生成,并对视频源的每一帧做剪切处理
  19. (NYoj 304) 节能 --区间DP
  20. wss://域名/xxx 404

热门文章

  1. exercise1 クジラと日本人
  2. C getchar putchar函数
  3. java handlerthread_HandlerThread: HandlerThread的理解
  4. Java--迭代器(Iterator)迭代原理
  5. FilterDispatcher 的作用
  6. A Reinforcement Learning Framework for Medical Image Segmentation翻译
  7. ECshop 每个数据库表结构说明
  8. MATLAB学习笔记04—MATLAB的字符与字符串类型
  9. java实现冗余校验_Java中循环冗余校验(CRC32)的实现
  10. 算法模型---支持向量机(SVM)