移动 > 阿里

Nginx try_files 指令常见用法示例

2人参与 2026-05-11 阿里

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 指令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Nginx 1.28.0 源码编译安装与自定义网页部署详细指南

05-11

Ubuntu26.04换阿里云镜像源过程

05-11

Centos7配置阿里云yum源及epel源过程

04-15

支付宝出行怎么添加到到桌面小组件? 支付宝出行创建桌面快捷方式技巧

03-17

简单操作轻松畅行! 支付宝出行设置付款方式指南

03-17

手残党也能秒会! 支付宝行乘车码领取全攻略

03-17

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论