常见的502问题

对于LNMP来说,最常见的问题就是502了,配置完环境后,一访问网站直接提示“502 Bad Gateway".出现502的问题大致分为两种。

(1)配置错误

在Nginx中有这么一段:

location ~ \.php$ {

finclude fastcgi_params;

fastcgi_pass unix:/tmp/php-fcgi.sock;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;

}

如果把fastcgi_pass后面指定的路径配置错了,那么就会出现502的错误,因为Nginx找不到php-fpm了。fastcgi_pass后面可以跟socket也可以跟ip:port,默认监听地址为127.0.0.1:9000。

(2)资源耗尽

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_chidren可以设置为150,尽量不要超过该数值,8G内存课设置为300,以此类推。

当然,除了这两宗情况外,也会有其他的情况导致502发生,但很少很少,那我们如何去判定到底是什么原因导致502呢?

其实,我们有一个办法可以去排查此类问题。就是要借助Nginx的错误日志,在Nginx.conf中有一个参数叫做error_log,它可以指定错误日志的路径,而错误日志其实还可以定义级别。默认是crit,该级别为最严谨的,记录日志也是最少的,有可能一些小问题我们不能发现,所以必要把日志级别调整一下,比如“error_log /usr/local/nginx/logs/nginx_error.log debug;”,这样显示的日志就会很多,不要忘记当调试完后要把级别改为cri,否则error_log会把磁盘撑爆!

[[email protected] ~]# cd /usr/local/nginx/conf/vhosts/

[[email protected] vhosts]# ls

111.conf  default.conf

[[email protected] vhosts]# mv 111.conf test.conf

[[email protected] vhosts]# vim test.conf

把文件内容更改为:

server

{

listen 80;

server_name www.test.com;

index index.html index.htm index.php;

root /data/www;

location ~ \.php$ {

include fastcgi_params;

fastcgi_pass unix:/tmp/www.sock;

#fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

}

}

检查配置文件是否正确:

[[email protected] vhosts]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重新加载:

[[email protected] vhosts]# /usr/local/nginx/sbin/nginx -s reload

或者

[[email protected] vhosts]# /etc/init.d/nginx reload

重新载入 Nginx:                                           [确定]

打开浏览器,输入配置文件中的网址:www.test.com

显示错误:502

查看Nginx错误日志:

[[email protected] vhosts]# vim ../nginx.conf(主配置文件)

查看文档:

[[email protected] vhosts]# cat /usr/local/nginx/logs/nginx_error.log

时间: 2024-10-11 16:40:03

常见的502问题的相关文章

005_常见的502错误

常见的502错误 1. 配置错误 因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port: 2. 资源耗尽 lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会资源耗尽,一旦资源耗尽nginx找不到php-fpm就会出现502错误: 解决方案: 去调整php-fpm.conf中的pm.max_ch

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-fcg

Nginx 502 bad gateway错误解决思路

当网站打开遇到Nginx 502 bad gateway的错误,造成这种错误的原因有很多,下面分别解析nginx常见的502错误. 1.nginx配置文件错误 因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port 解决方案: [[email protected] ~]# vim/usr/local/nginx/conf/vhosts/www.conf server {    listen 80;    se

PHP 出现 502 解决方案

原文:http://www.ahlinux.com/php/10319.html nginx+php 出现502 bad gateway,一般这都不是nginx的问题,而是由于 fastcgi或者php的问题导致的,常见的有以下几种. 1.   php.ini 的memory_limit 过小(如果有个别php程序进程需要占用极大内存时这个必须注意) 2.   php-fpm.conf 中max_children或者max_requests  设置不合理(设置过小会因为没有足够的cgi进程处理请

PHP出现502解决方案

nginx 出现 502 有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端 php-fpm 处 理有问题,nginx 将正确的客户端请求发给了后端的 php-fpm 进程,但是因为 php-fpm 进程的问 题导致不能正确解析 php 代码,最终返回给了客户端 502 错误. 服务器出现 502 的原因是连接超时我们向服务器发送请求由于服务器当前链接太多,导致服务器方 面无法给于正常的响应,产生此类报错.因此如果你服务器并发量非常大,那只能先增加机器,然后 按以下方式优化会取得更好

TCP/IP协议栈模型

OSI七层模型介绍: 下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分:而上3层(会话层.表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主. 物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,尽可能屏蔽掉具体传输介质和物理设备的差异. 数据链路层主要功能:建立和管理节点间的链路.通过各种控制协议,通过差错控制.流量控制方法,将有差错的

TCP/IP协议简介(五) 之 应用层

应用层协议 在传输层之上,便是应用层.传输层的 UDP 报文和 TCP 报文段的数据部分就是应用层交付的数据. 不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS.FTP.Telnet.SMTP.HTTP.RIP.NFS 等协议都是用于解决其各自的一类问题. 本节实验,介绍 DNS.FTP.HTTP 三个常用的应用层协议. 一.DNS DNS (Domain Name Service 域名服务) 协议基于 UDP,使用端口号 53. 由数字组成的 IP 地址很难记忆,所

lnmp 涂鸦

<directory /data/www/mmm>allowoverride noneoptions noneorder allow,denyallow</directory><filesmatch "(.*)php(.*)">order allow ,denyallow from all<filesmatch>禁用useragentrewritecond %{http_user_agent} ".*curl.*"[n

TCP-IP之应用层协议

应用层协议是多种多样的,比如 DNS.FTP.Telnet.SMTP.HTTP.RIP.NFS 一.DNS DNS (Domain Name Service 域名服务) 协议基于 UDP,使用端口号 53. 由数字组成的 IP 地址很难记忆,所以我们上网使用网站 IP 地址的别名--域名.实际使用中,域名与 IP 地址是对应的,这种对应关系保存在DNS 服务器之中. 在浏览器中输入一个域名后,会有 DNS 服务器将域名解析为对应的 IP 地址.注意这和网络层的 ARP 协议的不同之处:DNS 提