我正在尝试使用 php 代码向站点的/blog 子目录提供请求,该子目录位于文档根目录之外的文件夹中。这是我的主机配置:
server {
server_name local.test.ru;
root /home/alex/www/test2;
location /blog {
alias /home/alex/www/test1;
try_files $uri $uri/ /index.php$is_args$args;
location ~ \.php$ {
fastcgi_split_path_info ^(/blog)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
}
我收到了类似的请求
wget -O - http://local.test.ru/blog/nonExisting
只是来自/home/alex/www/test2/文件夹的 index.php 文件的代码。
但是,这个配置:
server {
server_name local.test.ru;
root /home/alex/www/test2;
location /blog {
alias /home/alex/www/test1;
try_files $uri $uri/ /blog$is_args$args;
index index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(/blog)(/.*)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
}
给我来自/home/alex/www/test2/的 index.html 文件。
请给我一个线索 - 为什么?我怎样才能强制 NGINX 处理/home/alex/www/test1/index.php 呢?
请您参考如下方法:
这是 a long standing bug in nginx .但是你可以通过使用 root
来解决这个问题。再次指示。有点像黑客,但至少它有效。
server {
index index.php;
root /home/alex/www/test2;
server_name local.test.ru;
location /blog {
root /home/alex/www/test1;
try_files $uri $uri/ /blog$is_args$args;
}
}