关于nginx配置fastcgi出现503错误解决

日期:2017年2月27日      标签:nginx

首先说下,什么是fastcgi,简单来讲就是一个协议,用来规范数据传输格式的。在nginx服务器下,如果我们需要处理index.html文件,一般是直接发送给客户端,但是如果是index.php文件的话我们需要先调用php解析器(CGI程序)来解析php文件,然后再把结果发送给客户端,调用解析器的过程中涉及到一些数据的传递,这就需要一些规范约束。但是每个CGI程序都需要去解析php.ini配置然后启动php进程,这就带来性能问题,fastcgi就是在此基础上省略掉每次解析配置的过程,从而提高性能问题,而说到fastcgi就不得不提下php-fpm,php-fpm是一个实现了Fastcgi的程序。总而言之就是可以再nginx的配置下面配置fastcgi,从而实现解析php文件。 如果对于fastcgi和php-fpm或者CGI还有问题的同学,可以看看这个链接: https://segmentfault.com/q/1010000000256516

下面来说说出现503的问题,

一般fastcgi的配置如下:

location ~ \.php$ {  
        try_files $uri = 404;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

配置了fastcgi服务器,是9000端口,这里需要注意,如果你的机器只安装了php,没有安装对应的php-cgi程序,例如php-fpm的话,这里是会出现503错误的

查看nginx的error.log日志,看到类似如下的错误:

connect() failed (111: Connection refused) while connecting to upstream  

说明连接到127.0.0.1:9000的时候出现错误,这时候可以通过netstat的相关命令查看9000端口的使用情况,如果没有进程在使用该端口的话代表php-fpm没有启动,这是可以通过 service php-fpm start命令启动程序。

如果提示找不到php-fpm找不到的话,代表没有安装, 使用如下命令安装:

yum install php-fpm #centos  
apt-get install php-fpm #ubuntu  

一般问题就解决了。

(正文完)



© 喻小右 2016 京ICP备15064386号-1