如何检索try_files指令中使用的目录?

时间:2012-07-17 08:29:10

标签: nginx

我很难弄清楚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编译的。

1 个答案:

答案 0 :(得分:0)

  

但是,如果我指定PHP脚本(index.php或其他),try_files会按预期查找文件

你在这里错了。在这种情况下,您的请求由location ~ \.php$处理,其中没有try_files。

顺便说一下,server_name ~^(?P<domain>.+)$;太过分了。您应该使用$host variable