美文网首页
详解nginx如何代理静态资源(长搜索路径优先)

详解nginx如何代理静态资源(长搜索路径优先)

作者: 糖醋沼跃鱼 | 来源:发表于2021-03-08 14:57 被阅读0次

web服务器重要的的任务之一就是服务静态资源文件,比如网站的图片,还有一些静态的HTML页面,本文的例子还是来自于Nginx官网。在这个用例中我们要配置两个静态资源路径,来处理外部的静态资源请求。我们会更改配置文件中,server块下http下的location。

首先需要创建/data/www目录,然后将index.html文件,文件的内容并不重要,本例只是指引我们观察nginx如何找到和发送静态资源。然后在创建一个/data/images目录,并放置一些图片文件。

下一步打开配置文件,默认的配置文件中已经包含了一些server块,大多数已经注释掉了,官网让我们把server块都注释掉,重写写一个新的空的server块,但注意,一定不要将http注释掉,nginx通过识别它才能知道我们需要处理的是http请求。

通常,配置文件可能会包含多个server块,这些server块可以由端口号区分,也可以由server names来区分。当nginx决定由哪一个server去处理请求的时候,nginx会根据server块中location参数去测试请求头中指定的URI

现在在server块中添加location块

location / {
    root /data/www;
}

nginx静态资源映射策略

该location块指定了URI请求的根目录前缀,"/"。对于请求来讲,URI被添加在root路径具体指向的目标路径,如果存在的多个匹配的位置块,nginx将选择前缀最长的位置块(可能是因为更加具体)。上方的location块提供的已经是最短前缀了,也就是说,server块中所有的location块如果都没有匹配到,则该location块将会被采用。
官网的说法真的非常绕,我觉得思路就是,nginx首先会优先去具体的location块匹配资源(规则是参数越长,越优先查找),如果都查不到就去根路径查。

我们再加一个location块

location /images/ {
    root /data;
}

这个location块会匹配以/images/开始的请求,但上一个(location块 location / 也会匹配该内容,记得吗,Nginx会先匹配长路径location块)

现在为了看的更加清楚,在加过这两部分内容之后的配置文件应该长这样

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

重新加载nginx之后,配置会更新,使用:

nginx -s reload

现在该配置文件已经生效了,配置在监听80端口的本地服务器上,我们可以在本地访问http://localhost/,在此之后例如 http://localhost/images/example.png这样的请求, Nginx会映射到location /images/去,如果请求的资源不存在,Nginx将返回404页面,404页面是可以定制的,一般企业也会定制属于自己的404页面。

后续

后续的内容我还打算针对一些常见场景,记录以下nginx的配置文件针对不同场景和需求该如何去写,以及为什么这么写。Nginx一些模块的详细介绍不打算专门写,大家如果有需求可以看官方文档。

Reference

http://nginx.org/en/docs/beginners_guide.html#conf_structure

本文转载至

  • Post author:SHIWEI MO
  • Post link: [https://mirrorgo.top/nginx_static_content/ "什么是docker-compose?和Dockerfile有什么区别?快速部署django项目")
  • Copyright Notice: All articles in this blog are licensed under BY-NC-SA unless stating additionally.

相关文章

  • Nginx常见使用场景-WEB服务(四)

    nginx常见使用场景 静态资源web服务 代理服务 负载均衡调度器slb 动态缓存 静态资源web服务 一,静态...

  • tomcat+nginx+shiro实现权限认证和URL拦截

    最近在使用tomcat+nginx来写javaweb。使用nginx作为代理服务器,将静态资源交给nginx处理,...

  • nginx

    1. Nginx的主要三个应用场景 请求到达 --> nginx:静态资源服务、API服务、反向代理服务 ...

  • nginx常用配置

    nginx常用配置 监听端口 访问日志 域名 静态资源 重定向 反向代理 负载均衡 SSL协议 nginx配置微信...

  • nginx动静分离

    1、准备环境准备一个nginx代理 两个http 分别处理动态和静态。 静态资源配置 动态资源配置:

  • 10.Nginx作为静态资源WEB服务-配置语法(sendfil

    静态资源WEB服务 Nginx作为静态资源WEB服务 , Nginx作为静态资源的HTTP WebServer它可...

  • nginx 网站服务

    1.nginx介绍1.1 nginx的特点nginx的基本特性 对静态资源高速高并发访问及缓存可使用反向代理加速,...

  • Nginx 反向代理与缓存功能

    Nginx反向代理(动静分离) 1、网页代码全是PMA。2、Nginx处理静态资源非常强大,在A上部署上PMA代码...

  • nginx 使用总结

    总结一下常用的 nginx 功能 常用的 nginx 功能 静态服务器 根据域名分发路径 反向代理 动静分离 负载...

  • Nginx(五)静态代理及动静分离

    一、静态代理 在处理静态资源时,相比于tomcat,nginx性能更好,效率也更高,因此,在实际应用中我们将静态资...

网友评论

      本文标题:详解nginx如何代理静态资源(长搜索路径优先)

      本文链接:https://www.haomeiwen.com/subject/blqbqltx.html