try_files
是 Nginx 配置中一个非常有用的指令,特别是在处理 PHP 请求时。它的主要作用是按顺序检查文件是否存在,并根据检查结果决定如何处理请求。在 PHP 配置中,try_files
的用法与其他场景有些不同,主要体现在如何处理 PHP 文件的请求。
try_files
的基本语法如下:
try_files file ... uri;
file
:要检查的文件路径。uri
:如果所有文件都不存在,则重定向到指定的 URI。在 PHP 配置中,try_files
通常用于检查请求的文件是否存在,如果不存在则重定向到 PHP 解释器(如 index.php
)进行处理。常见的配置如下:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
$uri
:检查请求的文件是否存在。$uri/
:检查请求的目录是否存在。/index.php?$query_string
:如果文件和目录都不存在,则将请求重定向到 index.php
,并将查询字符串传递给 PHP 脚本。当使用 PHP-FPM 处理 PHP 请求时,通常会将 PHP 文件的请求传递给 PHP-FPM 处理。在这种情况下,try_files
的配置可能会稍有不同:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
try_files $uri =404;
:首先检查请求的 PHP 文件是否存在,如果不存在则返回 404 错误。fastcgi_pass
:将请求传递给 PHP-FPM 处理。try_files
通常用于检查文件是否存在,如果不存在则重定向到另一个 URI 或返回错误。try_files
通常用于将请求重定向到 index.php
或其他入口文件,以便 PHP 脚本可以处理请求。此外,还需要确保 PHP 文件的请求能够正确传递给 PHP-FPM 或其他 PHP 解释器。try_files
的配置不会暴露敏感文件或目录。try_files
可以减少不必要的文件系统检查,提高性能。try_files
的顺序或添加日志来调试配置。通过合理配置 try_files
,可以有效地处理静态文件和 PHP 请求,确保网站的正常运行。