Nginx使用proxy_cache指令设置反向代理缓存静态资源

这篇具有很好参考价值的文章主要介绍了Nginx使用proxy_cache指令设置反向代理缓存静态资源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景

CentOS7中解压tar包的方式安装Nginx:

CentOS7中解压tar包的方式安装Nginx_centos7 tar文件 怎么load_霸道流氓气质的博客-CSDN博客

参考上面流程实现搭建Nginx的基础上,实现静态资源的缓存设置。

注意上面安装时的目录是在/opt/nginx目录下,这里是在/usr/local/nginx目录下。

Nginx缓存静态资源

nginx作为一款高性能的web服务器,可以在代理请求时缓存静态资源。

当用户请求一个静态资源时,nginx会先从本地缓存中查找。如果缓存中存在这个资源,

nginx会直接返回给用户;如果缓存中不存在这个资源,nginx会从上游服务器获取,

然后存储到本地缓存中并返回给用户。

Nginx 服务器中,还有一种使用 proxy_ cache 指令设置的临时缓存配置,它采用 md5法

将请求链接进行哈希( hash )后,根据具体配置生成缓存文件目录,保存响应的数据。

准备两台虚拟机并安装配置两个Nginx服务器,一台ip是192.168.148.141作为Web缓存服务器,

另一台是192.168.148.142作为内容源Web服务器。

注:

博客:
霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客

实现

1、首先配置Web缓存服务器192.168.148.141

编辑nginx.conf配置文件,在http块中添加如下配置

    #代理临时目录
    proxy_temp_path /usr/local/nginx/proxy_temp_dir;
    #Web缓存目录和参数设置
    proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1m max_size=500m;

注意这里的两个路径,因为nginx是安装在/usr/local/nginx下,所以上面出现的两个路径是在此路径的基础上配置,需要根据

自己需要改成对应的路径。

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

上面配置的指令

proxy_temp_path用于设置缓存服务器接收内容源服务器响应内容时使用的临时目录。

proxy_cache_path指令用于设置缓存目录,相关参数含义:

/usr/local/nginx/proxy_cache_dir参数表示用户自定义的缓存文件保存目录。

levels参数表示缓存目录下的层级目录结构,它是根据哈希后的请求URL地址创建的,目录名称从哈希后的字符串结尾处开始截取。

keys_zone参数指定缓存区名称及大小,例如,cache_one:50m表示缓存区名称为cache_one,在内存中的空间是50MB。

inactive参数表示主动清空在指定时间内未被访问的缓存。例如,1m清空在一分钟内未被访问过的缓存,1h表示1小时,1d表示1天等。

max_size参数表示指定磁盘空间大小,例如500m、10g。

需要注意的是, Nginx 在进行缓存时,首先会被写人 proxy_temp_path 指定的临时目录中,

因此建议 proxy_ cache_path proxy_temp_path 指令设置的目录应在同一个文件系统中,避免不同文件系统之间的磁盘I/O消耗。

接着在server块中添加临时缓存的相关配置

​
    server {
        listen       80;
        server_name  192.168.148.141;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #增加两个响应头信息,用于获取访问的服务器地址与缓存是否成功
        add_header X-Via $server_addr;
        add_header X-Cache $upstream_cache_status;
        location / {
            #设置缓存区域名称
            proxy_cache cache_one;
            #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希
            proxy_cache_key $host$uri$is_args$args;
            #对不同的HTTP状态码设置不同的缓存时间
            proxy_cache_valid 200 10m;     #200缓存10分钟
            proxy_cache_valid 304 1m;      #304缓存1分钟
            proxy_cache_valid 301 302 1h;  #301 302缓存1小时
            proxy_cache_valid any 1m;      #其他未设置的状态码缓存1分钟
     #设置反向代理
            proxy_pass http://192.168.148.142;
    
        }

​

注意添加位置

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

配置详解:

proxy_cache用于设置缓存区域名称。

proxy_cache_key用于设置hash的Key值组成规则,在省略的情况下,Nginx将使用默认的Key值组成规则。

proxy_cache_key具体内置变量说明:

$host:服务器的域名。

$uri:域名和参数之间的部分。

$is_args:有URL参数时,则值为?,否则为空字符串。

$args:保存URL参数,如a=1&b=2,没有参数时为空字符串。

proxy_cache_valid指令对不同的HTTP状态码设置不同的缓存时间,该指令的第一个参数表示状态码,第二个参数表示缓存时间。

add_header指令添加了两个响应头,为了便于在浏览器端查看是否正确缓存。

X-Via表示服务器地址,利用内置变量$server_addr获取,另一个X-Cache表示资源缓存状态,利用内置变量$upstream_cache_status获取。

$upstream_cache_status的返回值有7个:

HIT表示缓存命中

MISS表示未命中,请求被传送到后端

EXPIRED表示缓存已经过期,请求被传送到后端

UPDATING表示正在更新缓存,将使用旧的应答

STALE表示无法从后端服务器更新缓存时,返回了旧的缓存内容

BYPASS表示缓存被绕过了

REVALIDATED表示启用proxy_cache_revalidate指令后,当缓存内容过期时,Nginx通过一次If-Modified-Since的请求头去验证缓存内容是否过期,

此时会返回该状态。

注意:

对于用户的请求,仅在处理成功的情况下,才会在浏览器的Response Headers中查看到add_header指令设置的响应消息头。

2、访问测试

在内容源服务器192.168.148.142中放置几个测试文件,用于访问测试。

这里nginx使用的默认配置,所以将文件上传至/usr/local/nginx/html目录下

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

比如这里新建一个badao.html

<h1>192.168.148.142/badao.html!</h1>

然后启动两台服务器的nginx,在浏览器中访问

http://192.168.148.141/badao.html

此时打开浏览的开发工具-网络-点击bdao.html,找到响应表头,查看X-Via和X-Cache的值,可以看到此时为MISS

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

一分钟内进行第二次请求时为HIT

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

此时再查看缓存服务器192.168.148.141上面配置的缓存目录/usr/local/nginx/proxy_cache_dir下,

 Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

可以看到缓存文件。这里使用tree指令查看

该命令需要通过

yum -y install tree

安装后才可以使用。

为了深度验证,在141上请求之后,立即将142上的对应文件进行重命名,此时一分钟内141仍然可以通过缓存获取。

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

等到缓存过期之后再次访问则会提示404

Nginx使用proxy_cache指令设置反向代理缓存静态资源,Nginx,nginx,缓存,运维

 文章来源地址https://www.toymoban.com/news/detail-632414.html

到了这里,关于Nginx使用proxy_cache指令设置反向代理缓存静态资源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • nginx反向代理proxy_set_header说明

    用途 设定被代理服务器接收到的header信息 允许重新定义或添加字段传递给代理服务器的请求头 值可以包含文本、变量和它们的组合 没有定义时会继承之前定义的值 语法: field:变量名       value:变量值 默认值(只有两个字段被重定义):   变量$host、$http_host、$proxy_host区

    2024年02月16日
    浏览(29)
  • nginx配置中proxy_pass反向代理502的bug

    记录一个坑人的bug, 我今天在一台新的liunx上运行nginx来进行反向代理时候,发现怎么测都是502 我把配置全部删了从头开始配置,发现80端口正常,80端口index.html正常,反向代理转向http://127.0.0.1/也正常, 但就是proxy_pass转向其他端口,比如说http://127.0.0.1:3000/时候,会出现50

    2024年02月05日
    浏览(31)
  • vue项目跨域问题(图片跨域)devServer.proxy代理失效时,nginx反向代理解决跨域问题

    ​ 本篇文章主要记录个人在公司项目开发中所遇问题,主要内容:在vue项目的开发中图片所存的服务器/端口号和项目所在的服务器/端口号不同,出现了跨域问题的保错。 ​ 如果文章有歧义,请各位大佬指出,避免误导更多的人!! Bug起因 ​ 在vue项目的开发中图片所存的

    2024年02月15日
    浏览(32)
  • Nginx反向代理服务流式输出设置

    提问:为什么我部署的服务没有流式响应 最近在重构原有的GPT项目时,遇到gpt回答速度很慢的现象。在使用流式输出的接口时,接口响应速度居然还是达到了30s以上。 分析现象我发现,虽然前端还是流式打印的结果,但是,好像是接口处理完了,再以流式返回到的前端。 因

    2024年02月13日
    浏览(34)
  • nginx-反向代理是设置传输协议http/https

            X-Forwarded-Proto (XFP) 是一个事实上的标准首部,用来确定客户端与代理服务器或者负载均衡服务器之间的连接所采用的传输协议(HTTP 或 HTTPS)。在服务器的访问日志中记录的是负载均衡服务器与服务器之间的连接所使用的传输协议,而非客户端与负载均衡服务器

    2024年02月14日
    浏览(40)
  • Nginx负载均衡代理proxy_set_header设置和透传https协议

    最近基于Nginx + (Nginx + PHP7)的技术生态做负载均衡,其中PHP框架使用的是ThinkPHP5,支付业务中使用了微信支付,其中有一处逻辑:获取当前请求的域名并且微信支付的回调地址 thinkRequest::instance()-domain() ,本来小程序端访问的是https协议,做了负载均衡之后,在程序中获取到的

    2024年01月25日
    浏览(35)
  • java使用smiley-http-proxy-servlet实现反向代理,跳过SSL认证

            nginx可以实现反向代理,但是有时候需要使用java代码来实现,经过摸索,发现有开源的项目可以实现,所以简单记录一下如何使用         没啥好说         该项目的核心类是ProxyServlet,主要操作都在这个类中实现了,我们可以继承该类,重写其中的方法,自定义

    2024年02月09日
    浏览(32)
  • 什么是反向代理(Reverse Proxy)?解释反向代理的作用和常见应用。

    反向代理是一种代理服务器模型,它位于客户端和后端服务器之间。它允许将请求转发到后端服务器,并将响应返回给客户端。反向代理的主要作用如下: 负载均衡:通过将请求分发到多个后端服务器来平衡负载,从而减少单个服务器的负担,提高系统的可伸缩性。 安全性

    2024年02月09日
    浏览(26)
  • 使用Nginx作为反向代理服务器

    简介 在本教学文章中,我们将学习如何使用Nginx作为反向代理服务器,将流量转发到后端服务器。反向代理是一种常见的应用场景,它可以帮助我们提高应用程序的可靠性、性能和安全性。本教程将介绍如何配置Nginx作为反向代理,并涵盖负载均衡和缓存设置。 前提条件 在开

    2024年02月13日
    浏览(35)
  • 在Windows中使用Nginx实现反向代理

    Nginx介绍 Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx可以作为静态页面的web服务器,同

    2024年02月08日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包