搭建lnmp完lnmp环境后,测试时出现502报错,看到这个问题,我立刻想到是php-fpm没有起来,但是我用 ps -ef | grep php-fpm 截取 php-fpm 的进程,发现是有的,这时我有查看nginx的错误日志,发现错误信息是:

2017/05/05 17:08:45 [crit] 3258#0: *2 connect() to unix:/tmp/php-cgi.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.88.1, server: 192.168.88.133, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: "192.168.88.134"

备注:php我用的版本是7.1.4的,最新的版本,之前用5.6版本的时候没有出现过这个问题

思路:发现php-fpm的listen是unix sock方式运行的,问题可能出在php-fpm上。既然没有这个文件,就先把文件创建出来
1、创建这个文件,并赋予权限,因为我在编译的时候是用www用户,所以将/tmp/php-cgi.sock的属主和属组都授权为www

touch /tmp/php-cgi.sock
chown www.www /tmp/php-cgi.sock

重启ngix和php-fpm发现还是502的问题

2、我在网上也查看了下,说是其中
fastcgi_pass为配置nginx与php-fpm的交互路径,一般有两种方式
sock方式:fastcgi_pass unix:/tmp/php-cgi.sock;
http方式:fastcgi_pass 127.0.0.1:9000;
任选其中一种即可,但必须和php-fpm的配置一致。
后来我就在nginx的配置文件中加上一下代码

location ~\.php$ {  
    root /root/wwwroot;  
    fastcgi_pass unix:/tmp/php-cgi.sock;  
    fastcgi_index index.php;  
    include fastcgi.conf;  

3、同时修改php-fpm的配置文件php-fpm.conf,将listen = 127.0.0.1:9000改为

listen = /tmp/php-cgi.sock
#这个是设置 /tmp/php-cgi.sock 权限用的
listen.owner = www
listen.group = www
listen.mode = 0660

再次重启ngix和php-fpm,问题解决
这里写图片描述

总结:
1、其实这个问题总体就是nginx与php-fpm的交互问题,看我们选择是sock方式还是http方式,但是不管选择哪一种,我们都需要统一
2、我在网上看到有人说将max_children 进程改大,其实这种情况我之前遇到过,它适用于本来php运行正常,突然出现502的问题,这个问题是php-fpm队列满了,出现连接拒绝的错误。如果有问题,可以参考我的博客:http://blog.csdn.net/m0_37886429/article/details/70048754
3、还有人说将php-fpm配置文件里有backlog,backlog是linux服务器在socket处理连接数的定义,phpfpm默认为-1,将-1改为4096,重启php-fpm问题。
4、其实我们不管选择哪一种,主要是针对自己的问题,先要看报错,然后再对症下药,不要这一种试试那一种试试。

本人搞java的。最近在帮公司优化php项目。一边优化一边百度。这个项目访问量挺大的(平均每分钟请求在80000+)。 用了三台aws服务器。两台8核16G、一台4核16G。小的这台做Nginx并跑少量的php-fpm进程。基本上放上去就挂。访问全是502、504。因为项目是没有问题的,之前测试跑过了。然后就开始百度找问题。 1、怀疑是nginx的配置访问数或者连接数太小了扛不住,然后就增加n... 浏览器打开 1,nginx error 找不到位置 一般需要修改/usr/local/nginx/conf/nginx.conf(慎重修改 有可能引起其他网站问题) 2,502 error 情况1: nginx 挂掉: 命令:/usr/local/nginx/sbin/nginx-s reload 之后等待一会儿 情况2:php 挂掉: 首先需要修改/usr/local/php-5.6.0/et 浏览器打开 nginx出现502有很多原因,但大部分原因可以归结为资源数量不够用,也就是说后端php-fpm处理有问题nginx将正确的客户端请求发给了后端的php-fpm进程,但是因为php-fpm进程的问题导致不能正确解析php代码,最终返回给了客户端502错误。 nginx+php出现502 bad gateway,一般这都不是nginx问题,而是由于 fastcgi或者php的问题导致的 浏览器打开nginx下php的set_time_limit函数无效,set_time_limit(0)不会一直执行下去,set_time_limit(5)也不会只执行5秒 PHP运行时间取决于php-fp... 浏览器打开 这里写自定义目录标题/etc/init.d/php7.0-fpm status 在Ubuntu+Nginx+PHP环境下部署好以后,访问网站错502,在后台nginx error_log里看到以下错信息 2017/07/29 10:59:15 [error] 5622#0: *1 connect() failed (111: Connection refused) while connecti... 浏览器打开   1.调整php-fpm.conf中max_children配置   2.把耗时的网络IO(curl)或磁盘IO请求独立出来     2.1)新增一个php-fpm端口为9001的进程池,专门用了处理耗时的请求     2.2)nginx把耗时的处理转发... 浏览器打开 最近nginx经常502,解决502最好的办法就是重启php-fpm。 手动去重启还是比较麻烦的事情,最好的就是扔到shell里去。 vim restart-php-fpm.sh #!/bin/sh SERVICE=\'php-fpm\' #if ps ax | grep -v 浏览器打开 二:Nginx错误错为: 2018/10/22 18:07:09 [crit] 775#0: *41 connect() to unix:/var/run/php7.0-fpm.sock failed (2: No such file or directory) whil... 浏览器打开 1.怀疑是php-fpm.conf文件的pm.max_requests设置过小。待验证 参考:https://www.cmhello.com/php-fpm.html    http://hily.me/blog/2011/01/nginx-php-fpm-502/ 2.使用socket方式连接Nginx优化php-fpm性能下面是php 5.3以上版本将TCP 浏览器打开