nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx try_files 指令

Nginx try_files 指令常见用法示例

作者:学亮编程手记

try_files是Nginx用于按顺序检查文件是否存在并返回第一个找到的文件,本文给大家介绍Nginx try_files 指令常见用法示例,感兴趣的朋友跟随小编一起看看吧

try_files 是 Nginx 中一个非常实用的指令,用于按顺序检查文件是否存在,并返回第一个找到的文件。如果所有文件都不存在,则执行最后一个参数指定的回退操作(通常是返回错误码或转发请求)。

基本语法

try_files file1 file2 ... =code|uri|@named_location;

常见用法示例

1.SPA(单页应用)常用配置

location / {
    try_files $uri $uri/ /index.html;
}

2.带回退代理

location / {
    try_files $uri $uri/ @backend;
}
location @backend {
    proxy_pass http://backend_server;
}

3.检查多个路径

location /images/ {
    try_files /cache$uri $uri =404;
}

参数详解

$uri

当前请求的 URI(不包含查询参数)

$uri/

表示目录,会尝试寻找目录下的索引文件(需配合 index 指令)

回退类型

静态文件/路径

try_files $uri /default.html;

命名 location(@ 开头)

try_files $uri @fallback;
location @fallback {
    # 处理逻辑
}

错误码

try_files $uri =404;
try_files $uri =403;

代理转发

try_files $uri @proxy;
location @proxy {
    proxy_pass http://backend;
}

实际应用场景

场景1:PHP 应用

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php-fpm.sock;
}

场景2:多级缓存

location /assets/ {
    try_files /cdn-cache/$uri 
              /local-cache/$uri 
              $uri 
              @generate_asset;
}

场景3:维护模式

location / {
    try_files /maintenance.html $uri $uri/ @app;
}

注意事项

  1. 顺序重要:Nginx 按顺序检查,找到即停
  2. 性能影响:每个文件检查都会产生磁盘 I/O
  3. 相对路径:相对于 rootalias 指令
  4. 最后参数:必须指定回退操作
  5. 内部重定向try_files 会内部重定向,可能改变 $uri

与if的对比

不推荐(低效):

if (-f $request_filename) {
    # 处理静态文件
}

推荐(高效):

try_files $uri @dynamic;

调试技巧

添加调试日志:

location / {
    try_files $uri $uri/ @backend;
    error_log /var/log/nginx/try_files.log debug;
}

try_files 的核心思想是 “按优先级尝试,优雅降级”,合理使用可以大大简化配置逻辑并提高性能。

到此这篇关于Nginx try_files 指令常见用法示例的文章就介绍到这了,更多相关Nginx try_files 指令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文