答:第一需要需要了解nginx+php 安装步骤及设置:

nginx作为反向代理服务器,自身自能处理静态文件,如果需要处理php等动态脚本,则需要配置了转接给对应的处理程序进处理。nginx下运行php一般用php-fpm来实现。

nginx 要支持php程序首先需要安装php-fpm

第一步:添加epel源:yum install epel-release;安装php-fpm和其他php扩展命令如下:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

设置php-fpm自动启动命令:chkconfig php-fpm on

启动php进程命令:/etc/init.d/php-fpm start

启动php-fpm,默认程序监听端口是9000 运行账户为apache

查看php-fpm版本命令:php -v

查看端口9000状态命令:netstat -an | grep 9000;

查看php相关进程命令:ps aux | grep php;

第二步,修改php-fpm的配置,由于nginx运行账户为nginx,为了后期权限的设置,这里修改为nginx账户运行php-fpm.

修改php-fpm 配置文件命令:vi /etc/php-fpm.d/www.conf 。修改usergroup字段将apache改为nginx保存退出之后重启php-fpm进程。

重启php-fpm进程命令:/etc/init.d/php-fpm restart

第三步,更改nginx的配置,查看php-fpm能否正常启用,如能正常启用后,开始修改nginx的配置文件,下面给出的是一个简单的nginx+php虚拟主机配置文件:(留意红色部分为nginx处理php文件部分)

server

{

listen 80;

#listen [::]:80;

server_name antisec.cn www.antisec.cn;

index index.html index.htm index.php default.html default.htm default.php;

root /home/wwwroot/antisec.cn;

#error_page 404 /404.html;

location ~ [^/]\.php(/|$)

{

# comment try_files $uri =404; to enable pathinfo

try_files $uri =404;

#php5.3

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

#include pathinfo.conf;

}

 

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 30d;

}

 

location ~ .*\.(js|css)?$

{

expires 12h;

}

access_log /home/wwwlogs/antisec.cn.log main;

}


从上文红色部分可以看到是通过fastcgi_pass这个配置把php请求转发给9000端口的进程去处理。 如果是nginx + php-fpm则查php进程是否启动。其他类似502错误,登陆服务器查看 nginx 配置,其中的的反向代理配置后根据配置测试后端是否正常。