共计 1251 个字符,预计需要花费 4 分钟才能阅读完成。
关于 Nginx 配置基础知识,PHP 用 FastCGI,在 Apache 里,有 alias,比较方便,在 Nginx 下没有虚拟目录概念的,是用 location 配合 alias 使用,但使用 alias 标签的目录块中不能使用 rewrite 的 break。
一、例子说明:
1)我的环境是: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 /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 指令指定的路径。
: