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会撑爆磁盘!
LNMP中常见的502错误及处理方法的更多相关文章
- 编程中遇到的Python错误和解决方法汇总整理
这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析, ...
- 常见的SQL错误和解决方法
前言 今天你会看到每个人——从新手到专家——在使用SQL时犯的各种常见错误.你不能永远避免犯任何错误,但是熟悉广泛的错误将帮助你在尽可能短的时间内解决这些错误. 注:在我们的例子中我们使用的是Orac ...
- web开发中常见的安全漏洞及避免方法
1.安全攻击 1.SQL.HTML.JS.OS命令注入 2.XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3.CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信 ...
- nginx 配置虚拟主机访问PHP文件 502错误的解决方法
最近配置Nginx 服务器虚拟主机 访问目录发现报502错误 百度了很多方法 都不管用 我擦 各种抓狂----- 原本Nginx配置如下: 网上找了很多方法: 查看日志 借助nginx的错误日志 ...
- laravel中单独获取一个错误信息的方法
获取单独的错误信息的方法
- python中常见的一些错误异常类型
python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的 ...
- java 中常见的一些错误
1.NosuchMethodError java 类中找不到该方法! 可能该类所在的同一个包下有一个相同的相同的类,然后那个类中没有我们所要调用的类. 解决方法:若那个类不需要,可以删除class! ...
- iOS 开发中常见的崩溃错误
1.duplicate symbols for architecture armv7 1.首先排查是否有名字重复的文件: 2.检查是否在#import头文件的时候,不小心把.h写成了.m. 2 ...
- Nginx使用ngx_zeromq模块返回502错误的解决方法
/********************************************************************* * Author : Samson * Date ...
随机推荐
- bacula备份终端操作bconsole指令
1.list命令列出各种备份状态信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 list Jobs #列出所有备份记录状态 list jobid= ...
- linux export环境变量
Linux export命令参数(转载) 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环 ...
- 记python3 UnicodeEncodeError: 'latin-1' codec... 报错
python3用cx_Oracle查询oracle数据库并打印输出,在windows上执行没问题,打算放suse上跑的时候就遇到了打印中文UnicodeEncodeError: 'latin-1' c ...
- GitLab项目迁移到Gerrit
1.在Gerrit上新建项目: 2.Gerrit项目配置权限(此处非代码): Reference:refs/* Push Annotated Tag Push Signed Tag Forge Com ...
- IOS UIImage两种初始化的区别
UIImage可以通过以下两种方式进行初始化: 1 //第一种初始化方式:[注意使用这种初始化的时候如果是png格式的可以不给后缀名,根据屏幕的的分辨率去匹配图片] 2 3 UIImage *imag ...
- Spring boot 2.1.0 -- swagger2 整合
依赖版本信息 Spring boot 2.1.0.RELEASE swagger2 2.7.0 1. mvn 配置 pom.xml 包引入 <!--swagger2依赖--> <d ...
- [LeetCode&Python] Problem 589. N-ary Tree Preorder Traversal
Given an n-ary tree, return the preorder traversal of its nodes' values. For example, given a 3-ary ...
- 怎样取消老毛桃软件赞助商---只需在输入框中输入老毛桃官网网址“laomaotao.org”
来源:www.laomaotao.org 时间:2015-01-29 在众多网友和赞助商的支持下,迄今为止,老毛桃u盘启动盘制作工具已经推出了多个版本.如果有用户希望取消显示老毛桃软件中的赞助商,那不 ...
- Unity 3D开发-C#脚本语言的一些基础用法
Unity 中C#语言的一些基础用法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Lerp -- 线 ...
- HTML5和CSS3阶段,我是如何学习的?
经过一个月的学习,我收获了许多,今天的测验是做一个企业中文网站,令我自己感到吃惊的是,我前前后后用了4个小时就完成了,这在一个月前根本不可能,因为对布局属性的理解还不够深刻,常常会在调试中浪费大量时间 ...