Nginx反向代理缓存(proxy_cache配置)

Nginx反向代理缓存(proxy_cache配置)

实验环境

IP 服务 备注
192.168.1.10 nginx 用作代理服务器
192.168.1.20 nginx

安装Nginx、关闭防火墙

systemctl stop firewalld && systemctl disable firewalld && setenforce 0
yum -y install epel-release
yum -y install nginx

修改nginx配置文件、添加proxy_cache配置

192.168.1.20服务器我先启动并到导入图片用于测试

默认目录/usr/share/nginx/html
切换到默认目录导入图片(随意)
test1.png  test2.png #我导入的图片
启动nginx

访问:
在这里插入图片描述
在这里插入图片描述
192.168.1.10服务器进行代理20服务器并添加缓存配置
主要添加proxy_cache模块、以及修改location

获取nginx配置文件路径
[root@localhost ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost ~]# vim /etc/nginx/nginx.conf
    include /etc/nginx/conf.d/*.conf;
    ##反向代理配置
    upstream one {
                 
      server 192.168.1.20:80 weight=1 max_fails=2 fail_timeout=10;
}
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:10m inactive=1d max_size=40g;    
    #添加proxy_cache模块 /data/nginx/cache 本地缓存路径 cache_one别名
    server {
   
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
                # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    ##上面添加完proxy_cache之后还需要再location添加配置 可以进行调用
        location / {
   
          proxy_pass http://one/;
          proxy_cache cache_one;   ##调用别名为cache_one的这个缓存
          proxy_cache_valid  200 302 10d;
          proxy_cache_use_stale  error timeout invalid_header updating http_500 http_502 http_503 http_504;
          proxy_set_header HOST $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
            allow all;
          client_max_body_size    1024m;

        }

修改完毕后wq保存退出!
创建缓存目录:
mkdir -p /data/nginx/cache
启动nginx
nginx -s reload

proxy_cache代码说明:

proxy_cache_path 缓存文件路径
levels 设置缓存文件目录层次;levels=1:2 表示两级目录
keys_zone 设置缓存名字和共享内存大小.【在使用的地方要使用相同的变量名】
inactive 在指定时间内没人访问则被删除
max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。
这些是默认有的配置,当然可以根据自己业务的需求对缓存有其他新增的配置说明。
当配置好之后,重启nginx,如果不报错,则配置的proxy_cache会生效

location代码说明

proxy_cache_use_stale error timeout updating http_502 http_504;
#此处是托底配置,旧的总比出错强,当nginx请求后台服务器报错的时候,
#如果返回配置的错误响应码,nginx则直接取缓存文件中的旧数据返回给用户,托底使用必选配置。
proxy_cache_lock off;
#缓存并发锁,当nginx缓存没有命中的时候只有一个请求回源tomcat请求数据,其他请求会等待。非必选配置。
#意思就是 当多个请求传递到此配置时即他们的proxy_cache_key 是一样的,那多个请求只有一个才会真正回源【即到真正应用阶段生成响应内容】,
#最后将响应内容 添加到 cache ,然后其他请求 就从cache 获取数据,或直到超时。
proxy_cache_lock_timeout 20s;
#等待锁超时时间设置 非必选配置。
proxy_ignore_headers Cache-Control Expires;
proxy_cache cachefile;
# 配置了缓存空间名称,具体可以看节点的 proxy_disk.conf ,不同的请求对应不同的空间名称。
proxy_cache_valid 200 206 304 180d;
# 根据响应码设置缓存时间,超过这个时间即使缓存文件中有缓存数据,nginx也会回源请求新数据。
proxy_cache_key $cdn_cid;
proxy_cache_prefix_dir $cpid_cid;
proxy_pass $upstream_url;
     # 代理后转发的路径

访问:(注意IP,用的代理服务器ip)
在这里插入图片描述
在这里插入图片描述

查看缓存目录

验证:
在这里插入图片描述

Nginx缓存图片成功

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101901.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Oracle 11g数据库详细安装步骤图解,附带安装包

    Oracle 11g数据库详细安装步骤图解,附带安装包1.先到Oracle官网上下载11goracleDatabase11g第2版(11.2.0.1.0)标准版、标准版1以及企业版,适用于MicrosoftWindows(x64)的OracleDatabase11g第2版(11.2.0.1.0),下载地址(需要注册登录):http://download.oracle.com/otn/nt/ora…

    2022年5月7日
    56
  • 信道容量计算公式_信道均衡算法

    信道容量计算公式_信道均衡算法信道带宽=符号率*符号数*(188/204)注释:符号率&lt–&gt频宽(下行欧标频宽8MHz,上行有1.6MHz,3.2MHz,6.4MHz三种频宽);符号数&lt–&gt调制方式(符号数=Log2~调制方式,如QAM64的符号数为6,2的6次方=64)=====================================================…

    2022年8月31日
    6
  • phpstorm2021listen激活破解方法

    phpstorm2021listen激活破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    66
  • phpstorm 激活码【2021.7最新】

    (phpstorm 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html9ADCNKZL59-eyJsaWN…

    2022年3月22日
    41
  • 【mysql】细说 数据库隔离级别 及实现

    【mysql】细说 数据库隔离级别 及实现网上大多数关于隔离级别的文章都是讲了事务中的问题以及隔离级别可以解决的问题,我这次想看看数据库底层是如何实现隔离级别的。不过还是先来回顾一下隔离级别以及可能发生的问题。1.脏读:指的是一个事务的读操作读到了另一个未提交的事务修改的值。比如下面的场景:脏读的问题是,读到的值可能会被回滚,那么这个值就是失效的,不能继续使用,否则会有一致性问题。2.不可重复读:指的是一个事务读…

    2022年5月25日
    57
  • Java 的下载安装教程[通俗易懂]

    Java 的下载安装教程[通俗易懂]Java17的下载安装教程说明:本文介绍的是Windows下安装Java的方法。对于Linux下Java的安装,可见笔者的另一篇博客:在Linux操作系统中安装Java:https://blog.csdn.net/wangpaiblog/article/details/120093325笔者的安装环境:JDK17Windows10教育版安装Java就是安装JDK。Java有三大分支,这里选择的是JavaSE。关于

    2022年6月4日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号