我很难弄清楚try_files指令是如何工作的。 如果使用索引文件(http://domain.com/),则此配置按预期工作:
X-Fcgi-Script-Name /main_apps/domain.com/index.php
X-Script-Filename /var/www/main_apps/domain.com/index.php
但是,如果我指定PHP脚本(index.php或其他),try_files会按预期查找文件,但请查看变量:
X-Fcgi-Script-Name /index.php
X-Script-Filename /var/www/index.php
所以我的问题是:如何找到try_files指令选择的目录?
使用过的服务器配置:
server {
server_name ~^(?P<domain>.+)$;
root /var/www;
autoindex off;
index index.php;
try_files /main_apps/$domain$uri/ /partners/$domain$uri/ =404;
more_set_headers "X-Script-Filename: $request_filename";
more_set_headers "X-Fcgi-Script-Name: $fastcgi_script_name";
# Pass PHP scripts to PHP-FPM
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME $request_filename;
include php_fpm_params;
}
}
注意:我使用的Nginx是使用第三方模块HeadersMore编译的。
答案 0 :(得分:0)
你在这里错了。在这种情况下,您的请求由但是,如果我指定PHP脚本(index.php或其他),try_files会按预期查找文件
location ~ \.php$
处理,其中没有try_files。
顺便说一下,server_name ~^(?P<domain>.+)$;
太过分了。您应该使用$host
variable。