Nginx 中如何配置 try_files 指令?

推荐答案

在 Nginx 中,try_files 指令用于按顺序检查文件是否存在,并返回第一个找到的文件。如果所有文件都不存在,则返回最后一个参数指定的 URI 或状态码。

在这个例子中,Nginx 会依次尝试以下操作:

  1. 检查 $uri 是否存在(即请求的文件路径)。
  2. 如果 $uri 不存在,检查 $uri/ 是否存在(即请求的目录路径)。
  3. 如果 $uri/ 也不存在,则返回 /index.html
  4. 如果 /index.html 也不存在,则返回 404 状态码。

本题详细解读

1. try_files 指令的基本语法

try_files 指令的基本语法如下:

  • file:要检查的文件路径,可以是变量(如 $uri)或静态文件路径。
  • uri:如果所有文件都不存在,则返回的 URI 或状态码。

2. try_files 的工作原理

try_files 指令会按顺序检查每个文件路径,直到找到第一个存在的文件。如果所有文件都不存在,则返回最后一个参数指定的 URI 或状态码。

3. 常见用例

3.1 静态文件服务

  • 如果请求的文件存在,则返回该文件。
  • 如果请求的文件不存在,但目录存在,则返回目录索引。
  • 如果文件和目录都不存在,则返回 /index.html

3.2 处理 404 错误

  • 如果请求的文件或目录不存在,则返回 404 状态码。

3.3 重定向到后端应用

  • 如果请求的文件或目录不存在,则将请求转发到后端服务器。

4. 注意事项

  • try_files 指令只能在 location 块中使用。
  • 最后一个参数可以是 URI 或状态码(如 =404)。
  • 如果最后一个参数是 URI,Nginx 会进行内部重定向,而不是直接返回该 URI。
纠错
反馈