答:第一需要需要了解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 。修改user和group字段将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 配置,其中的的反向代理配置后根据配置测试后端是否正常。