我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何利用nginx做代理缓存浅析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何利用nginx做代理缓存浅析

用到缓存就是为了减少后端的压力,提高网站并发。在网站设计中,为了更好的去中心化,我们会尽量将请求集中到前端,在前端就能处理掉。

常用的缓存类型有客户端缓存、代理缓存、服务端缓存等。

客户端缓存【缓存存到本地,如数据存到用户的浏览器缓存中,从本地读取】代理缓存【缓存存到代理或中间件上,如从服务端获取到的数据放置在nginx上,访问时直接读取nginx的缓存】服务端缓存【缓存存到服务端,经常使用redis和memchache,比如key-value格式的数据】

代理缓存简略示意:

 nginx代理缓存配置:


proxy_cache_path /opt/www/cache levels=1:2 keys_zone=test_cache:10m max_size=10g inactive=60m use_temp_path=off;
 
server { 
	 listen 80;
	 server_name cache.test.com;
	 #rewrite ^/(.*)$ https://${server_name}$1 permanent;    #跳转到Https
 
     if ($request_uri ~ ^/(test.html|login|register|password|\/reset)) {
            set $cookie_nocache 1;
     }
 
	 location / { 
		    proxy_cache test_cache; #要和proxy_cache_path 的 keys_zone值相等
            proxy_pass http://127.0.0.1:8081;
            proxy_cache_valid 200 304 12h;
            proxy_cache_valid any 10m;
            proxy_cache_key $host$uri$is_args$args;
            proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
            proxy_no_cache $http_pragma $http_authorization;
    }
}

参数解释:

  • proxy_cache_path 缓存文件路径
  • levels 设置缓存文件目录层次;levels=1:2 表示两级目录
  • keys_zone 设置缓存名字、开辟空间的大小,10m表示10 MB的大小
  • max_size 此目录最大空间大小,10g表示10 GB的大小。假如超过了10G,nginx会根据自己的淘汰删除规则删除一部分缓存数据,默认覆盖掉缓存时间最长的缓存数据。
  • inactive 在指定时间内没人访问则被删除,60m表示60分钟
  • use_temp_path 用来存放临时文件,建议设置为off

关于更多的参数可以参考nginx官网:Module ngx_http_proxy_module:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path

  • proxy_cache test_cache 表示已经开启了代理缓存,若不想使用代理缓存,将该值配置成 off。
  • proxy_pass 代理的地址
  • proxy_cache_valid 200 304 12h;状态码为200,304的响应过期时间为 12h。
  • proxy_cache_valid any 10m;除了200和304状态码的其它状态码的缓存时间为10分钟。
  • proxy_cache_key $host$uri$is_args$args; 设置默认缓存的key。$is_args表示请求中的URL是否带参数,如果带参数,$is_args值为"?"。如果不带参数,则是空字符串。$args表示HTTP请求中的参数。
  • proxy_no_cache 当url中匹配到了 test.html , login, register, password 和 reset 时,不缓存此url所对应的页面。

配置完毕,先检查下语法是否正确nginx -tc /etc/nginx/nginx.conf,再重载服务nginx -s reload

附:平滑重启nginx


[root@localhost nginx]# nginx -s reload

[root@localhost nginx]# ps -elf|grep nginx

1 S root 10175 1 0 80 0 - 27830 sigsus 09:52 ? 00:00:00 nginx: master process nginx

5 S www 11165 10175 0 80 0 - 28893 ep_pol 18:10 ? 00:00:00 nginx: worker process

5 S www 11166 10175 0 80 0 - 28893 ep_pol 18:10 ? 00:00:00 nginx: worker process

5 S www 11167 10175 0 80 0 - 27830 ep_pol 18:10 ? 00:00:00 nginx: cache manager process

重启完成这里会多一个cache manager,其主要作用和memcached的LRU算法相似,删除过期缓存。而如果缓存没过期其上有服务器数据发生变化则依旧访问是错误的数据。可以通过程序实现。

总结

到此这篇关于如何利用nginx做代理缓存的文章就介绍到这了,更多相关nginx做代理缓存内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何利用nginx做代理缓存浅析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx反向代理和proxy_cache缓存如何搭建CDN服务器

这篇文章将为大家详细讲解有关Nginx反向代理和proxy_cache缓存如何搭建CDN服务器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。碰到问题:移动用户访问web服务器www.osyunwei.co
2023-06-16

如何使用代理IP节省缓存时间

本篇内容介绍了“如何使用代理IP节省缓存时间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!提高网络打开速度,一般来说,缓冲器制造的缓冲大小与
2023-06-20

如何使用宝塔面板进行反向代理缓存配置

要使用宝塔面板进行反向代理缓存配置,您需要遵循以下步骤:1. 登录到您的宝塔面板账户。2. 在面板首页,找到您要配置反向代理的网站,并单击相应的网站图标。3. 在网站管理页面的左侧导航栏中,找到并单击“反向代理”选项。4. 在反向代理页面中
2023-10-10

如何强制Outlook解析缓存模式下的代理地址和自定义属性

要强制Outlook解析缓存模式下的代理地址和自定义属性,你可以按照以下步骤进行操作:1. 打开Outlook,并点击左上角的“文件”选项。2. 在打开的菜单中,选择“帐户设置”下的“帐户设置”选项。3. 在弹出的“帐户设置”窗口中,选择要
2023-09-07

如何使用Python中的内存管理技巧和优化算法提高代码性能和资源利用率

如何使用Python中的内存管理技巧和优化算法提高代码性能和资源利用率引言:Python作为一种高级编程语言,以其简洁、易读的语法和强大的功能而受到广泛的应用。然而,由于其动态类型和垃圾收集机制的特性,Python在内存管理方面可能存在一些
2023-10-27

编程热搜

目录