设为首页 收藏本站
查看: 937|回复: 0

LNMP 常见502问题汇总

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-11 09:02:13 | 显示全部楼层 |阅读模式
我们在配置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,调整其级
别,有助于我们看到更多的错误。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137727-1-1.html 上篇帖子: LNMP基于fastcgi实现nginx,php,mysql的分离 下篇帖子: CentOS编译安装lamp .
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表