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 ...
随机推荐
- LeetCode OJ:Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- 使用pool的多进程,不执行的问题
from multiprocessing import Pool def fetch_data(idlist,test): pass p=Pool(4) result=[] for i in rang ...
- windows安装redis和php拓展
第一步:下载redis 我是win7的环境,直接到https://github.com/MSOpenTech/redis/releases下载windows版本的redis: 第二步:配置path i ...
- iOS调用第三方地图App进行导航方法
前言 App内根据手机上装载的地图App将其显示在弹出的选择框,选择对应地图跳转进入地图导航.需要用到- (BOOL)canOpenURL:(NSURL *)url NS_AVAILABLE_IOS( ...
- HTTPS 通俗简介
为什么需要HTTPS 9个问题搞懂 https 来源 HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理 等. 举个最常见的例 ...
- django页面导出excel
from django.http import HttpResponse from xlwt import * from io import BytesIO def excel_export(requ ...
- 获取exe所在目录路径,速度
// test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> #include &l ...
- 玩转TypeScript(1) --定义简单的类
相对于JavaScript来说,TypeScript增强了强制类型,同时添加了一系列的面向对象的特性,包含:静态类型(Static typing).类(Classes).接口(Interfaces). ...
- Apache2.4配置总结(转)
文章内容转自- ->https://blog.csdn.net/u012291157/article/details/46492137 1.apache开机自启动 [root@csr ~]# c ...
- Java Iterator的一般用法
Iterator(迭代器) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的I ...