Nginx的try_files指令详解

这篇具有很好参考价值的文章主要介绍了Nginx的try_files指令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nginx的try_files指令详解

顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
注:只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部的 URL 的指向。最后一个参数是回退 URL 且必须存在,否则会出现内部 500 错误。命名的 location 也可以使用在最后一个参数中。

举例说明
示例一:

nginx.conf: |
    server {
            listen 80;
            listen [::]:80;
            server_name magedu.com www.magedu.com;
            index index.php index.html index.htm;
            root /var/www/html;
            location ~ /.well-known/acme-challenge {
                    allow all;
                    root /var/www/html;
            }
            location / {
                    try_files $uri $uri/ /index.html =404;
            }
   }

解释配置:

1.root:设置静态根目录为 /var/www/html
2. index:设置目录的默认文件为 index.html 、index.htm、index.php
3. try_files:设置文件查找规则为 $uri $uri/ /index.html。即3个规则,先从 $uri 查找,再从 u r i / 目录中查找,最后查找 / i n d e x . h t m l 。 4. 例子:根据上面的配置,当请求 h t t p : / / l o c a l h o s t : 3004 / a p i 时, uri/ 目录中查找,最后查找/index.html。 4. 例子:根据上面的配置,当请求 http://localhost:3004/api 时, uri/目录中查找,最后查找/index.html4.例子:根据上面的配置,当请求http://localhost:3004/api时,uri 为 /api。当前try_file 具体为:/api、/api/、/index.html,其中 / 表示根目录(根据 root 或 alias 来指定)。

5.仅当以上都不存在时,NGINX才会触发404错误

查找逻辑:

  1. 首先:检查 /var/www/html 目录中是否存在 api 文件,如果存在,则返回文件;如果不存在,则进行下一步。
  2. 其次:检查 /var/www/html目录中是否存在 api/ 目录,如果存在,则在检查 api/ 目录中是否存在 index.html 或者 index.htm 文件(由 index 指定);如果存在,则返回该文件。如果不存在,则进行下一步。
  3. 最后:检查 /var/www/html 目录中是否存在/index.html文件。如果存在,则返回文件;如果不存在,则返回 404。
    示例二:
location /pngs/ {
    root /data/user/;
    index index.html index.htm;
    try_files $uri   $uri/  /pngs/file.png; 
}

根据上面的配置,当请求 http://localhost:3003/pngs/rule.png 时, $uri 为 /pngs/rule.png,当前 try_file 查找顺序为,首先是:/data/user/pngs/rule.png,其次是:/data/user/pngs/rule.png/ 文件下的 index 所配置的文件,即: index.html、index.htm,最后是: /data/user/pngs/file.png在这里插入代码片文章来源地址https://www.toymoban.com/news/detail-606985.html

到了这里,关于Nginx的try_files指令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微服务系列文章 之 nginx日志配置指令详解

    日志对于统计排错来说非常有利的。本文总结了nginx日志相关的配置如access_log、log_format、open_log_file_cache、log_not_found、log_subrequest、rewrite_log、error_log。 nginx有一个非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令来定义。ngx_

    2024年02月16日
    浏览(48)
  • nginx之详解fastcgi指令

    详解 感谢老铁 https://cloud.tencent.com/developer/article/1521284

    2024年02月04日
    浏览(40)
  • 【运维安全】运维界葵花宝典:Nginx配置与优化秘籍

    必要的原理介绍 ● Nginx 里有一个master进程和多个worker进程.master进程并不处理网络请求,主要负责调度工作进程: 加载配置,启动工作进程及非停升级.worker进程负责处理网络请求与响应. ● master进程主要用来管理worker进程,具体包括如下4个主要功能: 接收来自外界的信号 向各wo

    2024年02月21日
    浏览(50)
  • 【Nginx37】Nginx学习:SSL模块(一)简单配置与指令介绍

    又是一个重点模块,SSL 模块,其实就是我们常见的 HTTPS 所需要的配置模块。HTTPS 的重要性不用多说了吧,现在所有的 App、小程序 都强制要求是 HTTPS 的,即使是网站开发,百度也明确了对 HTTPS 的收录会更好。也就是说,HTTPS 已经成为了事实上的正式环境协议标准。 在 Ngin

    2024年02月06日
    浏览(34)
  • nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS

    1.nginx控制浏览器缓存是针对于静态资源[js,css,图片等] 1.1 expires指令

    2024年02月08日
    浏览(44)
  • 【Kubernetes运维篇】ingress-nginx实现业务灰度发布详解

    1、场景一:将新版本灰度给部分用户 假设线上运行了一套对外提供 7 层服务的 Service A 服务,后来开发了个新版本 Service AA需要上线,但不想直接替换掉原来的 Service A,希望先灰度一小部分用户,等运行一段时间足够稳定了再逐渐全量上线新版本,最后平滑下线旧版本。 这

    2024年02月15日
    浏览(54)
  • Nginx配置证书报错nginx: [emerg] cannot load certificate “../software/nginx/zhifu.pem“: BIO_new_file() fail

    本人在Nginx配置完证书  重启时报错:不能加载证书: nginx: [emerg] cannot load certificate \\\"../software/nginx/zhifu.pem\\\": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen(\\\'../software/nginx/zhifu.pem\\\',\\\'r\\\') error:2006D080:BIO routines:BIO_new_file:no such file) 我个人遇到的问题是: 我

    2024年02月12日
    浏览(46)
  • nginx 配置 ssl 后无法访问 nginx: [emerg] cannot load certificate “*”: BIO_new_file() failed

    nginx 配置 ssl 后无法访问 nginx -s reload 无异常,其他域名也可以正常访问 使用 systemctl status nginx 查看状态,发现异常 可能是 SELinux 打开造成无权限读取证书 如果状态为disabled是关闭,没必要往下看了 重启nginx,应该就可以了 nginx -s reload 无效,可能是以下原因,建议直接使用

    2024年02月08日
    浏览(52)
  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

    1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过direct

    2024年02月14日
    浏览(50)
  • Nginx详解之Nginx高级配置

    基于nginx 模块 ngx_http_stub_status_module 实现,在编译安装nginx的时候需要添加编译参数 –with-http_stub_status_module,否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态 实际操作: Active connections: #当前处于活动状态的客户端连接数

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包