nginx

关注公众号 jb51net

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

Nginx中try_files指令的实现示例

作者:我叫白小猿

try_files是Nginx配置中的一个指令,用于检查文件是否存在,并根据存在情况处理请求,本文就来介绍一下Nginx中try_files指令的实现示例,感兴趣的可以了解一下

1. 简介

try_files是Nginx中一个非常强大且常用的指令,其用于按顺序检查文件是否存在,并将请求传递给第一个找到的文件,或者在所有文件都未找到时,执行一个回退URI。该指令在配置静态网站或单页面应用(SPA)时特别有用,因为其可以确保Nginx优先服务静态文件,而只有在静态文件不存在时才将请求转发给后端应用或提供回退页面。

2. 基本语法

try_files file ... uri;

try_files使用示例:

try_files  $uri $uri/ /TEST/index.html;

这里的 $uri 是客户端请求的原始 URI。

让我们逐步解释这条指令:

1)$uri: Nginx 会首先尝试直接从请求的 URI 中查找文件。例如,如果用户请求 /about, Nginx 会尝试查找 /about 文件。
2)$uri/: 如果第一步没有找到文件,Nginx 会尝试将请求的 URI 视为目录,并在后面添加斜杠 /。例如,如果用户请求 /about, Nginx 会尝试查找 /about/ 目录。
3)/TEST/index.html: 如果前两步都没有成功找到文件或目录,Nginx 会尝试返回 /TEST/index.html 文件。

则:

3. 案例

3.1 静态网站

假设有一个静态网站,其HTML、CSS和JS文件都存放在/data/www目录下,并希望Nginx首先尝试直接服务这些静态文件,若文件不存在,则返回404错误。

server {  
    listen       80;  
    server_name  example.com;  
  
    root   /data/www;  
  
    location / {  
        try_files $uri $uri/ =404;  
    }  
}

在该例子中,$uri表示请求的URI(不包括主机名和端口),若$uri指向的文件或目录存在,Nginx将直接服务它,若$uri指向的文件不存在但目录存在,Nginx会尝试在末尾添加斜杠并重试请求,若仍未找到文件,则Nginx将返回404错误。

3.2 单页面应用

对于单页面应用,希望无论请求什么URL,都返回同一个HTML文件(通常是index.html),然后让前端路由处理这些URL,这可以通过将try_files指令的回退设置为该HTML文件来实现。

server {  
    listen       80;  
    server_name  myapp.com;  
  
    root   /usr/share/nginx/html;  
  
    location / {  
        try_files $uri $uri/ /index.html;  
    }  
}

该配置中,Nginx首先尝试服务请求的文件或目录,若找不到,则会回退到/index.html,这允许前端路由接管并显示正确的页面,这种方法特别适用于React、Vue或Angular等现代前端框架构建的单页面应用。

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

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