Nginx虛擬目錄支持PHP也是花了不少時間查找資料研究摸索,最終用下面兩段解決。下面不是一段完整的Nginx配置文件,對於該配置片段簡單解釋如下:
1. 該文件配置一個主機www.mydomain.com在/data/Service下
2. 將一個在/data/Forum下的論壇程序掛在www.mydomain.com/Forum下,這裏我用的是phpBB3
3. 將一個在/data/Mantis下的Bug跟蹤管理程序MaintisBT掛在www.mydomain.com/Mantis下
phpBB3和MantisBT分別是兩個獨立的PHP程序。
對於Nginx虛擬目錄支持分兩段:
1. 第一段用alias解決虛擬目錄問題,使用rewrite處理訪問重定向,並傳遞用於fastcgi的正確的腳本位置
2. 第二段用於處理所有的非PHP文件在虛擬目錄中的訪問,沒有第二段,訪問非PHP文件就是出現404
server {
listen 80;
server_name www.mydomain.com;
#root /data/Service;
charset utf-8;
access_log /usr/local/nginx/logs/www.mydomain.com.access.log main;
# Virtual directory with PHPsupport onnginx
location ~ ^/Forum/.+\.php$ {
alias /data/Forum/;
rewrite /Forum/(.*\.php?) /$1 break;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /data/Forum$fastcgi_script_name;
include fastcgi_params;
}
location ~^/Forum($|/.*) {
alias /data/Forum/$1;
index index.php index.html index.htm;
}
# Virtual directory with PHP support on nginx – end
# Virtual directory with PHP support onnginx
location ~ ^/Mantis/.+\.php$ {
alias /data/Mantis/;
rewrite /Mantis/(.*\.php?) /$1 break;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /data/Mantis$fastcgi_script_name;
include fastcgi_params;
}
location ~^/Mantis($|/.*) {