起因

新装的LNMP环境怎么都跑不起来代码,一直提示502 bad gateway 本着有事找度娘的精神,我首先百度了以下,果然度娘一下帮我找到了很多网友们提供的答案,五花八门,有的说是超时时间的问题,有的说是php没有启动的问题。
作为一个程序员排查问题是必备技能之一,经过一番排查,并不是超时的问题,php也已经正常启动,那为什么会出现这样的问题呢?从php未启动的基础上我作了一个大胆的假设是不是配置的fast_cgi有问题呢?既然有了大胆的假设接下来就是小心求证的过程了。

小心求证

首先上一段为关于fast_cgi的配置代码

location ~* \.php$ {fastcgi_index   index.php;fastcgi_pass    127.0.0.1:9000;include           fastcgi_params;fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;}

乍看是没什么毛病毕竟网上千篇一律的都是这样的配置,接下我使用netstat -tlnp | grep 9000 筛选了一下监听9000的程序然而结果却出乎意料,并没有监听9000的程序,结果如下

(Not all processes could be identified, non-owned process info

到这里几乎已经很大几率是出现在配置上了,查询了一下NGINX 相关的配置资料发现
Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Socket.
其中TCP是IP加端口,可以跨服务器.而UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.用哪种取决于你的PHP-FPM配置:
方式1:
php-fpm.conf: listen = 127.0.0.1:9000
nginx.conf: fastcgi_pass 127.0.0.1:9000;
方式2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;
其中php-fpm.sock是一个文件,由php-fpm生成,类型是srw-rw—-.

UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.这种通信方式是发生在系统内核里而不会在网络里传播.UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了.

UNIX Domain Socket:
Nginx <=> socket <=> PHP-FPM
TCP Socket(本地回环):
Nginx <=> socket <=> TCP/IP <=> socket <=> PHP-FPM
TCP Socket(Nginx和PHP-FPM位于不同服务器):
Nginx <=> socket <=> TCP/IP <=> 物理层 <=> 路由器 <=> 物理层 <=> TCP/IP <=> socket <=> PHP-FPM
而此次出现问题的原因在于,我使用的是UNIX Domain Socket而nginx配置的确实tcp方式,既然知道症结所在,修改起来也就方便很多了修改代码如下

location ~* \.php$ {fastcgi_index   index.php;#fastcgi_pass    127.0.0.1:9000; 注释掉tcp方式fastcgi_pass    unix:/dev/shm/php-cgi.sock;#使用UNIX Domain Socketinclude           fastcgi_params;fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;}

修改完配置之后,重启服务器,问题果然就解决了.

php 502 bad gateway 解决方法相关推荐

  1. lnmp一键包502 Bad Gateway解决方法

    使用LNmp有一段时间了,可是在流量大的时候,有时会莫名其妙的出现Nginx 502 Bad Gateway,不是php-fpm死掉了,就是nginx死掉了,网站多的时候根本没空每天一个个检查,往往是 ...

  2. php502bad gateway,经验之谈:nginx php 502 bad gateway 解决方法

    今天在使用nginx时发现运行php页面会提示502 bad gateway这类错误了,下面我根据各位群友提供的一些方法完美的解决了502 bad gateway问题. 访问phpMyAdmin时,出 ...

  3. LNMPA(LNMP0.7)安装出现502 Bad Gateway解决方法

    2019独角兽企业重金招聘Python工程师标准>>> LNMPA是什么? 简单的说就是Linux+Nginx+MySql+PHP+Apache 怎么会用这种构架? Nginx和Ap ...

  4. 常见的Nginx 502 Bad Gateway解决办法

    常见的Nginx 502 Bad Gateway解决办法如下: Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数 ...

  5. php502bad gateway,PHP表单提交后出现502 bad gateway解决办法

    搜索热词 <PHP表单提交后出现502 bad gateway解决办法>要点: 本文介绍了PHP表单提交后出现502 bad gateway解决办法,希望对您有用.如果有疑问,可以联系我们 ...

  6. nginx 502 Bad Gateway解决办法

    我的解决方式比较小白, 第一次报这个错(nginx 502 Bad Gateway).网上找了一大圈都是PHP什么的,但是好像都不适用. 于是问了之前的一个同事,他说是不是我的tomcat关闭了,我恍 ...

  7. nginx常见502错误的解决方法

    Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...

  8. 记一次服务后端502 Bad Gateway解决办法

    1.502 Bad Gateway 意思为错误的网关 2.这次错误是调试本地开发环境和测试环境是遇到的 3.具体报错原因分析: ①本地服务需要http远程调用测试环境的服务 ②测试环境是nginx+服 ...

  9. php 502 bad gateway,解决lnmp服务器环境访问php文件出现502 Bad Gateway错误问题

    网站原来运行正常,突然出现 "502 Bad Gateway"页面,可能因为phpcgi进程不够用而造成502,一般php-cgi默认进程是5个,不够则需要修改/usr/local ...

最新文章

  1. 网络设置计算机,怎么重置电脑网络设置
  2. 那么多GAN哪个好?谷歌大脑泼来冷水:都和原版差不多
  3. 咱们一起聊聊Zookeeper
  4. windows平台下:scikit-learn安装教程
  5. 让聊天机器人同你聊得更带劲 - 对话策略学习 | 论文访谈间 #21
  6. html链接sqlserver,js连接sqlserver进行查询
  7. javaweb男的gulp入手实践
  8. proteus中使用虚拟串口实现单片机和上位机通讯
  9. glog 编译报错 ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h.
  10. 在windows上安装 chocolatey.1.1.0.nupkg
  11. html css 窗口样式,简单的css样式网页
  12. 计算机键盘fn,笔记本键盘fn键有什么用 笔记本键盘fn键使用说明大全
  13. 【原创--学习整理】学习bat和dos的相关资料整理--汇总
  14. Asp.Net Core 密码加密方案
  15. webpack中vender的抽离
  16. RSA 含两道oj 上ctf题目
  17. 【poj-1066】判断线段相交
  18. assembly 输出ab中所有数_BGA、TAB、零件、封装及Bonding制程术语解析
  19. 隐私计算头条周刊(12.4-12.10)
  20. 如何解决微信端不能直接跳转浏览器

热门文章

  1. myeclipse 6 注册码生成
  2. 织梦DedeCMS管理员动态密码登录插件下载
  3. c语言程序设计实践万年历,c语言程序设计万年历-20210408030342.docx-原创力文档
  4. 这是昨天的内容,就这样慢慢整吧,然后,荒废了好多时间啊!!
  5. Learning and Meta-Learning of Stochastic Advection-Diffusion-Reaction Systems from Sparse Measuremen
  6. Unity引擎中的C#语言学习的笔记(1)
  7. 哔咔服务器无响应,哔咔哔咔漫画进不去怎么办 无法进入解决办法
  8. 存储误删除所有lun的数据恢复方法
  9. 【Windows】U 盘装系统,无法格式化所选磁盘分区[错误: 0x8004242d]
  10. 微信小程序能用php框架吗,WeiPhp框架在微信小程序后台开发的优势与使用方法