Nginx try_files 指令常见用法示例

 更新时间:2026年05月11日 09:35:36   作者:学亮编程手记  
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;
}
  • 先尝试访问请求的 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;
}
  • 先检查缓存目录
  • 再检查原始路径
  • 都不存在返回 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;
}
  • 防止直接访问不存在的 PHP 文件

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

相关文章

  • 浅谈Nginx请求限制和访问控制的实现

    浅谈Nginx请求限制和访问控制的实现

    这篇文章主要介绍了浅谈Nginx请求限制和访问控制的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • nginx上传文件限制的操作步骤

    nginx上传文件限制的操作步骤

    Nginx限制文件大小可以通过 client_max_body_size 指令来设置,该指令通常在 http、server 或location 块中设置,如果不设置,默认上传大小为1M,这篇文章主要介绍了nginx上传文件限制,需要的朋友可以参考下
    2024-08-08
  • Nginx进行平滑升级的实战指南(不中断服务版本更新)

    Nginx进行平滑升级的实战指南(不中断服务版本更新)

    Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升级导致的请求中断问题,以下是实现Nginx平滑升级的具体步骤,需要的朋友可以参考下
    2025-08-08
  • 利用Nginx反向代理解决跨域问题详解

    利用Nginx反向代理解决跨域问题详解

    这篇文章主要介绍了利用Nginx反向代理解决跨域问题详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • nginx安装以及配置的详细过程记录

    nginx安装以及配置的详细过程记录

    Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,下面这篇文章主要给大家介绍了关于nginx安装以及配置的详细过程,文章将实现的过程介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 使用nginx部署前端项目的实现

    使用nginx部署前端项目的实现

    前端项目的部署以前一直是把静态资源放到后端工程中,随后端部署一起部署,本文主要介绍了使用nginx部署前端项目的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 一篇文章读懂nginx的gzip功能

    一篇文章读懂nginx的gzip功能

    nginx提供了对文件内容压缩的功能,允许将内容在发送到客户端之前根据具体的策略进行压缩从而节约带宽,下面这篇文章主要给大家介绍了如何通过一篇文章读懂nginx的gzip功能,需要的朋友可以参考下
    2022-05-05
  • 详解php+nginx 服务发生500 502错误排查思路

    详解php+nginx 服务发生500 502错误排查思路

    这篇文章主要介绍了详解php+nginx 服务发生500 502错误排查思路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Nginx代理同域名前后端分离项目的完整步骤

    Nginx代理同域名前后端分离项目的完整步骤

    这篇文章主要给大家介绍了关于Nginx代理同域名前后端分离项目的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 如何让你的Nginx支持分布式追踪详解

    如何让你的Nginx支持分布式追踪详解

    分布式追踪系统(Tracing)旨在分析请求背后调用了哪些服务,服务的调用顺序、耗时、错误原因等,下面这篇文章主要给大家介绍了关于如何让你的Nginx支持分布式追踪的相关资料,需要的朋友可以参考下
    2022-07-07

最新评论