LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

NGINX中try_files常见用法

admin
2025年8月14日 20:24 本文热度 7

在 Nginx 中,try_files 是一个极为实用的指令,主要用于 按顺序检查文件或路径是否存在,并返回第一个匹配到的资源或执行备用操作。它常见于 server 或 location 块中,尤其在单页应用(SPA)、静态资源服务和 URL 重写等场景下发挥关键作用,语法如下:

location / {    try_files file1 file2 ... fallback;}

    • file1, file2:按顺序检查的文件或路径(相对于 root 或 alias 指定的目录)
    • fallback:当所有文件都不存在时的备用处理方式(可以是内部重定向,比如:/index.html、命名 location,比如: @backend 或状态码,比如: 404/503等)

    1、检查静态资源是否存在,不存在返回abc目录下默认文件index.html,查看nginx配置文件,如图:

    上述配置理解为:如果默认情况下什么路由都不加,那么请求到abc/index.html,如果请求的时候加了一个路由,比如 “ip/about.txt”,那么首先会查找abc路径下是否有about.txt文件,此时about.txt对应的就是"$uri",如果没有找到about.txt,那么继续查找abc路径下是否有about.txt目录,这个about.txt目录对应的就是”$uri/” ,如果有,那么就请求about.txt目录的内容,如果也没有这个目录,那么就返回默认的页面,也就是最开始的abc/index.html
    注:找about.txt目录下的文件默认也是index.html
    举例:
    (1)、如果什么路径都不加,直接使用IP访问,默认会找到abc下的index.html,如图:
    (2)、在abc目录下定义about.txt目录,在此目录下定义index.html文件,写入内容,通过ip/about.txt访问,如图:
    注:因为abc目录下没有about.txt文件,但是有about.txt目录,因此跳过$uri,继续找$uri/,找到了并返回结果
    (3)、在abc目录下定义test.txt文件,写入内容,此时通过ip/test.txt访问,如图:
    此时符合了第一个$uri,因此不会继续向后面查找了
    (4)、直接通过ip请求未知的资源路径,ip/gong.doc,回到了默认页面,如图:
    因为abc路径下不存在gong.doc也不存在这个目录,因此就会找到最终的/index.html
    2、检查静态文件是否存在,不存在则转发到后端应用,源nginx的配置,如图:
    上图中的配置可以理解为如果请求的路由不匹配$uri和$uri/,那么会转发到@backend的后端服务,这个backend名称是自定义的,因此如果请求http://192.168.49.83/test_route的时候,但是本地没有对应的匹配,因此会转发到http://192.168.49.224/test_route,这个test_route会带到后端去的
    这里还是以两个nginx的静态页面举例:
    (1)、修改49.224的nginx配置文件,添加内容如图:
    注:在后端的nginx配置中,也要有这个test_route路由,否则会报404错误
    (2)、在/data/html目录下新建test_route目录并定义index.html文件,如图:
    (3)、此时通过源IP来请求test_route路由,因为当前没有匹配,就会跳转到后端服务去,如图:
    上述NGINX配置中有个参数,如下:
    add_header X-Tried-File $uri always; #always表示对所有响应有效
    此参数的意思是在 HTTP 响应头 中新增一个自定义头字段 X-Tried-File,其值为 用户实际请求的文件路径(即 $uri 变量),查看响应头信息,可以看到X-Tried-File,如图:
    3、检查静态文件是否存在,不存在直接返回404,如图:
    请求gong.txt,既不存在此文件也不存在此目录,因此直接返回404,如图:
    4、访问页面,直接返回状态码,适合维护页面,如图:
    在abc目录下定义maintenace.html(名字要与nginx配置名字一致),然后通过192.168.49.83请求,如图:
    5、嵌套条件,修改nginx配置文件,如图:
    上面配置理解为:如果请求/hello,那么匹配/custom/hello,如果匹配不到就继续匹配/default/hello,如果都匹配不到就返回404
    (1)、在abc目录下新建custom目录并在内部创建gong.txt文件,新建default目录并在内部新建guan.txt,通过url请求,如图:


    阅读原文:原文链接


    该文章在 2025/8/15 12:36:28 编辑过
    关键字查询
    相关文章
    正在查询...
    点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
    点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
    点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
    点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
    Copyright 2010-2025 ClickSun All Rights Reserved