Nginx发布Alias虚拟目录及PHP支持配置方法

2012年08月10日 CentOS, Linux, 测试工具, 测试技术, 软件测试 ⁄ 共 3343字 ⁄ 字号 暂无评论 ⁄ 阅读 12,716 次

CentOS上安装完Nginx后,Nginx默认只支持静态页面,当收到动态页面请求时,Nginx将其交给PHP来处理。本文主要介绍CentOS上Nginx Alias发布虚拟目录及支持PHP配置方法。

1.     安装php-fpm等模块

在安装LAMP时,已经安装了如下模块

yum install php-mysql php-common 
php-mbstring php-gd 
php-imap php-ldap 
php-odbc php-pear 
php-xml php-xmlrpc

继续安装如下模块

yum install php-fpm php-cli php-mcrypt php-mssql php-snmp php-soap php-tidy

安装php-fpmphp-cli模块时,CentOS自带的源不存会提示错误。需要进行如下处理:

配置remi源

rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
yum install yum-priorities

 

vi /etc/yum.repos.d/remi.repo

在文件中写入

[remi]

name=Les RPM de remi pour Enterprise Linux $releasever - $basearch

#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/

mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror

enabled=1

priority=10

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

failovermethod=priority

安装php-fpm

yum install php-fpm php-cli php-gd php-mysql

2.     编辑php.ini

vi /etc/php.ini

在文件结尾处添加

cgi.fix_pathinfo = 1

3.     启动php-fpm

service php-fpm start
chkconfig --levels 235 php-fpm on

4.     建立测试主页index.php

Nginx默认的发布目录是/usr/share/nginx/html,在此文件夹下建立测试主页

vi /usr/share/nginx/html/index.php

写入如下内容

<?php
phpinfo();
?>

5.     修改nginx配置文件

vi /etc/nginx/nginx.conf

进行如下修改(可直接覆盖原文件)

server {

listen       8080;

server_name  _;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

root   /usr/share/nginx/html;

index  index.php index.html index.htm;

}

error_page  404              /404.html;

location = /404.html {

root   /usr/share/nginx/html;

}

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   /usr/share/nginx/html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#    proxy_pass   http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

root           /usr/share/nginx/html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;

include        fastcgi_params;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

location ~ /\.ht {

deny  all;

}

}

6.     重启相关服务

service nginx restart
service php-fpm restart

这时访问http://localhost:8080打开Nginx默认的php测试主页,如下

7.     虚拟目录配置

Nginx中有alias与root两种标签,最基本的区别是:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。如:

location /lovesoo {
alias /media/lovesoo;
index index.html index.htm ;
}

这种配置下http://localhost/lovesoo指定的是/media/lovesoo

location / lovesoo  {
root /media/;
index index.html index.htm ;
}

这种配置下,访问http://localhost/lovesoo时,Nginx会去找/media目录下的lovesoo文件夹

Nginx也有与Apache类型的alias功能,示例配置如下

location ~ / lovesoo {
root /media/;
index index.html index.htm ;
}

8.     php支持配置

首先建立index.php测试文件

vi /media/lovesoo/index.php

写入如下内容

<?php

phpinfo();

?>

 

vi /etc/nginx/nginx.conf

在nginx配置文件中添加如下配置

location /lovesoo {

alias /media/lovesoo;

index index.php index.html index.htm;

}

location ~ /lovesoo/.+\.php.*$ {

if ($fastcgi_script_name ~ /lovesoo/(.+\.php.*)$) {

set $valid_fastcgi_script_name $1;

}

fastcgi_pass  127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /media/lovesoo/$valid_fastcgi_script_name;

include  fastcgi_params;

}

重启nginx及php-fpm服务

service nginx restart
service php-fpm restart

访问http://localhost:8080/lovesoo,即可正常访问测试主页index.php