我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

最近的几篇文章都是讨论nginx的超时状态码的。在脚本超时的情况下,nginx出现了三个不同的状态码,分别是404/502/504。本文做一个简要的总结,三种状态码都出现在什么样的情景下呢?

苏南大叔:nginx超时状态码总结,404/502/504状态码区别 - nginx超时状态码
nginx超时状态码总结,404/502/504状态码区别(图2-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。

php-cgi 和 php-fpm

本文测试环境有两个,win10下的phpstudycentos下的宝塔。windows下没有php-fpm,只有php-cgi。所以,不同的操作系统下,nginxphp之间的关系也是不同的。

windows系统下,nginx@1.15.11php-cgi@8.2.11nts下。

  • php_sapi_name()输出:cgi-fcgi
  • phpinfo()里面的server api是:CGI/FastCGI

苏南大叔:nginx超时状态码总结,404/502/504状态码区别 - fpm-fastcgi
nginx超时状态码总结,404/502/504状态码区别(图2-2)

centos系统下,nginx@1.20.2php-fpm@5.6.40下。

  • php_sapi_name()输出:fpm-fcgi
  • phpinfo()里面的server api是:FPM/FastCGI

状态404

这种情况是在win10下的phpstudy下得到的,具体来说,nginx@1.15.11php-cgi@8.2.11nts。参考文章:

当试图通过nginx访问一个长期运行的php脚本(set_time_limit(0);while(true){})的时候,就会触发一个404状态。

状态502

502状态码是【php自身出了问题】,导致超时的情况。测试环境:centos为代表的类*unix系统中,nginx@1.20.2php-fpm@5.6.40。参考文章:

一共有三种情况会产生502状态码。分别是:

  • php.inimax_execution_time设置。
  • php-fpm.confrequest_terminate_timeout设置。
  • php-fpm进程挂了。

状态504

504状态码是【nginx出了问题】,导致超时的情况。测试环境:centos为代表的类*unix系统中,nginx@1.20.2php-fpm@5.6.40。参考文章:

相关的设置就一个,是nginx的配置项目fastcgi_read_timeout

结语

苏南大叔的更多nginx经验文章,请点击下面的链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   nginx