502 VS 504
本文同时发表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/89 首先看一下概念: 502:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 504:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。 注意:某些代理服务器在DNS查询超时时会返回400或者500错误。 通俗的来说,nginx作为一个代理服务器,将请求转发到其他服务器或者php-cgi来处理,当nginx收到了无法理解的响应时,就返回502。当nginx超过自己配置的超时时间还没有收到请求时,就返回504错误。 502 上面说到nginx收到了无法理解的响应,什么是无法理解的响应呢? nginx无法与php-fpm进行连接。 nginx在连接php-fpm一段时间后发现与php-fpm的连接被断开。 那么什么时候会出现上面的情况呢? php-fpm没有启动,nginx无法将请求交给php-fpm php-fpm运行脚本超时,php-fpm终止了脚本的执行和执行脚本的Worker进程,nginx发现自己与php-fpm的连接断开。 我们逐一实验上述的情况: php-fpm没有启动 我们关闭php-fpm。