linux中 Nginx 常见502错误问题解决办法

常见的Nginx 502 Bad Gateway解决办法如下:

Nginx 502错误情况1:

网站的访问量大,而php-cgi的进程数偏少。
针对这种情况的502错误,只需增加php-cgi的进程数。具体就是修改/usr/local/php/etc/php-fpm.conf 文件,将其中的max_children值适当增加。这个数据要依据你的VPS或独立服务器的配置进行设置。一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多。
/usr/local/php/sbin/php-fpm restart 然后重启一下.

Nginx 502错误情况2:

CPU占用率、内存占用率非常高,遭到CC攻击.
解决方法请参考:LinuxVPS简单解决CC攻击

Nginx 502错误情况3:

CPU占用率不高,内存溢出。
检查一下网站程序有没有问题?一般小偷站点常常会出现内存溢出。
检查一下/var/log/目录下的日志,看看是不是有人爆破SSH和FTP端口?
SSH、FTP遭到穷举也会占用大量内存。是的话改掉SSH端口和FTP端口即可

将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手:

1.查看FastCGI进程是否已经启动

NGINX 502错误的含义是sock、端口没被监听造成的。我们先检查fastcgi是否在运行

2.检查系统Fastcgi进程运行情况

除了第一种情况,fastcgi进程数不够用、php执行时间长、或者是php-cgi进程死掉也可能造成nginx的502错误
运行以下命令判断是否接近FastCGI进程,如果fastcgi进程数接近配置文件中设置的数值,表明worker进程数设置太少
netstat -anpo | grep "php-cgi" | wc -l

3.FastCGI执行时间过长

根据实际情况调高以下参数值
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;

4.头部太大

nginx和apache一样,有前端缓冲限制,可以调整缓冲参数
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
如果你使用的是nginx的负载均衡Proxying,调整
proxy_buffer_size 16k; proxy_buffers 4 16k;

5.https转发配置错误

正确的配置方法

server_name www.111cn.net; location /myproj/repos { set $fixed_destination $http_destination; if ( $http_destination ~* ^https(.*)$ ) { set $fixed_destination http$1; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Destination $fixed_destination; proxy_pass http://subversion_hosts; }

时间: 2024-07-30 21:57:27

linux中 Nginx 常见502错误问题解决办法的相关文章

linux中Firefox浏览器flash 崩溃问题解决办法

这一篇介绍一种 Linux 系统下 flash 崩溃的解决办法. 环境如下: 操作系统:openSUSE 13.2 32 位 浏览器:Firefox 34 版本 状况:凡使用 flash 的页面均出现 Adobe Flash 插件已崩溃. 尝试 Chrome 浏览器,同样存在问题: Shockwave Flash has crashed. 排查步骤如下: 打开 Firefox 附加组件页面,检查 flash 相关插件的安装情况,如下图: 我们能看到两个版本的 flash 插件: Shockwav

linux中"dig: command not found"问题解决办法

今天老蒋有在调试Dnsmasq创建本地DNS服务器的时候有需要用到dig命令测试效果,但是默认Linux系统中好像没有安装dig支持组件.于是有错误提示"-bash: dig: command not found". 快速解决"dig: command not found"问题 主要问题是默认系统中缺少bind-utils工具包导致的,我们直接yum安装看看呗. yum -y install bind-utils 这样,我们在安装工具包之后,再去dig命令就没有任何

linux中ssh登录很慢问题解决办法

使用ssh客户端(如:putty)连接Linux服务器,可能会等待10-30秒才有提示输入密码.严重影响工作效率.登录很慢,登录上去后速度正常,这种情况主要有两种可能的原因: 1. DNS反向解析问题 OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法.如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就会很花时间. 解决办法: 在目标服务器上修改sshd服务器端配置,并重启sshd vi /e

linux中安装PycURL出现的问题解决办法

使用pip安装PycURL时发现如下报错: src/pycurl.h:152:5: warning: #warning "libcurl was compiled with SSL support.... 但是系统中已经安装libcurl及libcrul-devel,最后google到了原因,是因为CentOS源中libcurl的版本过低,需要自行编译安装最新版本的curl: wget http://curl.haxx.se/download/curl-7.39.0.tar.gz tar xf

LNMP环境nginx: [emerg] open()错误问题解决办法

今天晚上遇到网友在LNMP一键包环境中在人为操作错误导致网站打不开,老蒋开始被告知是需要处理WordPress后台获取不到主题编辑权限,于是根据惯例删除scandir参数就可以,不过估计值钱他操作失误导致某个文件丢失.在我重启Nginx的时候出现这样的提示:    代码如下 复制代码 Starting nginx... nginx: [emerg] open() "/home/wwwlogs/nginx_error.log" failed (2: No such file or dir

linux中root无法启动php-fpm问题解决办法

centos 6.5 64位的机器,用yum装的php-fpm,因为特殊原因需要用root账号启动php-fpm,但是发现,启动不了. 1,修改user和group # vim /etc/php-fpm.d/www.conf     ; RPM: apache Choosed to be able to access some dir as httpd  user = root        //改为root  ; RPM: Keep a group allowed to write in lo

linux编译ruby1.8.7错误问题解决办法

今天同事要求在测试机上安装ruby和rails的时候,居然安装ruby-1.8.7出现编译错误.如下: ossl_pkey_ec.c:815: error: 'EC_GROUP_new_curve_GF2m' undeclared (first use in this function) ossl_pkey_ec.c:815: error: (Each undeclared identifier is reported only once ossl_pkey_ec.c:815: error: f

linux中ssh密钥登录失败问题解决办法

搞一个ssh的密钥登录,结果发现就是无法使用密钥登录,非让我输入密码.苦恼. 输入ssh连接代码 ssh -i private.key -v user@host.com -p22 从连接的信息中看不出有什么问题. debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Next authentication method: publickey debug1

linux中Neo4j Server启动失败问题解决办法

最近需要用到Neo4j做个小试验,看似顺利安装却在启动server的时候报错.最终发现问题是JDK1.7安装时,少修改了一个symlink. 我的安装步骤如下: 从Oracle下载了JDK1.7,在~/.bashrc里修改了JAVA_HOME变量.  代码如下 复制代码 export JAVA_HOME=/usr/libexec/java_home -v 1.7 检查了一下当前jdk版本.  代码如下 复制代码 > source ~/.bashrc > java -version java v