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会撑爆磁盘!

最新文章

  1. 第五篇T语言实例开发,百变字符(版本5.0)
  2. NSDate
  3. 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)(转)
  4. iOS UIBezierPath知识介绍
  5. HTML标签的默认样式
  6. 域控制器中的FSMO角色
  7. How to search compound files
  8. js中的Call与apply方法
  9. dede当前位置各种写法
  10. 路由模块router实现step1
  11. tfs权限设置
  12. vue.js插入dom节点的方式
  13. iOS基础知识之排序
  14. vl_sift函数用法
  15. linux下安装oracle及weblogic
  16. Guava Enums
  17. OpenCV中Mat操作clone() 与copyto()的区别
  18. LINUX系统文件类型分类
  19. Lua-简洁、轻量、可扩展的脚本语言
  20. 通过div实现arcgis自定义infowindow

热门文章

  1. 安装win8时提不能在gpt磁盘中安装
  2. 切换python版本
  3. 移动端自动化openatx开源项目介绍,pytest并发测试框架结合
  4. jmeter随笔(31)--RandomString和Random函数使用
  5. UnicodeDammit
  6. hdu1301 Jungle Roads 最小生成树
  7. echar生成雷达图
  8. 不缓存AJAX
  9. leetcode:Valid Palindrome【Python版】
  10. stenciljs 学习十 服务器端渲染