配置nginx下别名alias支持PHP fastcgi解析

我的环境是:web根目录在 /var/www/html/中,但是我要加上一个类似于apache的别名目录 /bbs ,此目录不在 web根目录中。
我的配置文件如下:

server {
listen       80;
server_name    localhost;
default_type text/plain;

location / {
root    /var/www/html;
index    index.php index.htm index.html;

}

location = /extension/sub {
set $push_channel_id $arg_exten;
push_subscriber long-poll;
push_subscriber_concurrency broadcast;
push_channel_group broadcast;
default_type text/plain;
}

location = /extension/pub {
set $push_channel_id $arg_exten;
push_publisher;
push_min_message_buffer_length 0;
push_max_message_buffer_length 0;
push_message_timeout 1h;
push_channel_group broadcast;
default_type text/plain;
}

location /bbs {
alias /opt/bbs/;
index index.html index.htm index.php;
}

location ~ ^/bbs/.+\.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param SCRIPT_FILENAME /opt$fastcgi_script_name;
include        fastcgi_params;
#include fastcgi.conf;
}

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
include        fastcgi_params;
#include fastcgi.conf;
}

}

说明: 上面这个就是成功的例子。但是又如下几点需要注意:
1)location ~ \.php$ {}  段,必须放在 location ~ ^/bbs/.+\.php$ {} 段后面,否则/bbs/的url打不开
2) location ~ ^/bbs/.+\.php$ {} 里面也可以写成如下:
location ~ ^/bbs/.+\.php$ {
root /opt;
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include        fastcgi_params;
}
也就是用 变量名 $document_root 代替 /opt; 其实每个 location {}中的 $document_root 都是局部变量,都是在本段配置 root指令指定的路径。

以上配置完全可以通过nginx的第3放插件 echo 模块来得到验证,方法如下:
location /echo {
root /etc/asterisk;
#echo “$document_root”;
echo “$fastcgi_script_name”;
}

转自:

https://www.cnblogs.com/voiphudong/p/3242913.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注