1.缓存配置语法

1)proxy_cache配置语法

  1. Syntax: proxy_cache zone | off;
  2. Default: proxy_cache off;
  3. Context: http, server, location

2)缓存路径

  1. Syntax: proxy_cache_path path [levels=levels]
  2. [use_temp_path=on|off] keys_zone=name:size [inactive=time]
  3. [max_size=size] [manager_files=number] [manager_sleep=time][manager_threshold=time]
  4. [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off]
  5. [purger_files=number] [purger_sleep=time] [purger_threshold=time];
  6. Default:
  7. Context: http

3)缓存过期周期

  1. Syntax: proxy_cache_valid [code ...] time;
  2. Default:
  3. Context: http, server, location
  4.  
  5. #示例
  6. proxy_cache_valid 200 302 10m;
  7. proxy_cache_valid 404 1m;

4)缓存的维度

  1. Syntax: proxy_cache_key string;
  2. Default: proxy_cache_key $scheme$proxy_host$request_uri;
  3. Context: http, server, location
  4.  
  5. #示例
  6. proxy_cache_key "$host$request_uri $cookie_user";
  7. proxy_cache_key $scheme$proxy_host$uri$is_args$args;

2.代理配置缓存

  1. [root@localhost ~]# mkdir /var/cache/nginx
  2. [root@localhost ~]# vim /etc/nginx/conf.d/proxy_cache.conf
  3. upstream cache {
  4. server 10.0.0.12:80;
  5. server 10.0.0.13:80;
  6. server 10.0.0.14:80;
  7. }
  8.  
  9. #proxy_cache_path 存放缓存临时文件
  10. #levels 按照两层目录分级
  11. #keys_zone 开辟空间名, 10m:开辟空间大小, 1m可存放8000key
  12. #max_size 控制最大大小, 超过后Nginx会启用淘汰规则
  13. #inactive 60分钟没有被访问缓存会被清理
  14. #use_temp_path 临时文件, 会影响性能, 建议关闭
  15. proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;
  16.  
  17. server {
  18. listen 80;
  19. server_name 127.0.0.1;
  20.  
  21. #proxy_cache 开启缓存
  22. #proxy_cache_valid 状态码200|304的过期为12h, 其余状态码10分钟过期
  23. #proxy_cache_key 缓存key
  24. #add_header 增加头信息, 观察客户端respoce是否命中
  25. #proxy_next_upstream 出现502-504或错误, 会跳过此台服务器访问下台
  26. location / {
  27. proxy_pass http://cache;
  28. proxy_cache code_cache;
  29. proxy_cache_valid 200 304 12h;
  30. proxy_cache_valid any 10m;
  31. add_header Nginx-Cache "$upstream_cache_status";
  32. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  33. include proxy_params;
  34. }
  35. }

3.客户端测试

  1. [root@localhost ~]# curl -s -I http://127.0.0.1/index.html | grep "Nginx-Cache"
  2. Nginx-Cache: MISS
  3.  
  4. [root@localhost ~]# curl -s -I http://127.0.0.1/index.html | grep "Nginx-Cache"
  5. Nginx-Cache: HIT

4.缓存清理

1)删除已缓存数据

  1. [root@proxy ~]# rm -rf /var/cache/nginx/*
  2. [root@localhost ~]# curl -s -I http://127.0.0.1/index.html | grep "Nginx-Cache"
  3. Nginx-Cache: MISS

2)使用ngx_cache_purge扩展模块清理,需要编译安装nginx(安装过程略)

修改配置文件

  1. [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
  2. ...
  3. upstream cache {
  4. server 10.0.0.12:80;
  5. server 10.0.0.13:80;
  6. server 10.0.0.14:80;
  7. }
  8.  
  9. proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;
  10.  
  11. server {
  12. listen 80;
  13. server_name 127.0.0.1;
  14.  
  15. location / {
  16. proxy_pass http://cache;
  17. proxy_cache code_cache;
  18. proxy_cache_valid 200 304 12h;
  19. proxy_cache_valid any 10m;
  20. add_header Nginx-Cache "$upstream_cache_status";
  21. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  22. include proxy_params;
  23. }
  24. location ~ /purge(/.*) {
  25. allow 127.0.0.1;
  26. deny all;
  27. proxy_cache_purge code_cache $host$1$is_args$args;
  28. }
  29. }
    ...

清理缓存

  1. [root@localhost ~]# curl http://127.0.0.1/purge/index.html

5.部分页面不缓存
1)指定部分页面不进行proxy_Cache缓存

  1. [root@localhost conf.d]# vim proxy_cache.conf
  2. upstream cache{
  3. server 10.0.0.12:80;
  4. server 10.0.0.13:80;
  5. server 10.0.0.14:80;
  6. }
  7.  
  8. proxy_cache_path /soft/cache levels=1:2 keys_zone=code_cache:10m max_size=10g inactive=60m use_temp_path=off;
  9.  
  10. server {
  11. listen 80;
  12. server_name 127.0.0.1;
  13. if ($request_uri ~ ^/(login |register|password)) {
  14. set $cookie_nocache 1;
  15. }
  16.  
  17. location / {
  18. proxy_pass http://cache;
  19. proxy_cache code_cache;
  20. proxy_cache_valid 200 304 12h;
  21. proxy_cache_valid any 10m;
  22. proxy_cache_key $host$uri$is_args$args;
  23. proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
  24. proxy_no_cache $http_pargma $http_authorization;
  25. add_header Nginx-Cache "$upstream_cache_status";
  26. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
  27. include proxy_params;
  28. }
  29. }

2)清理原先的缓存

  1. [root@localhost ~]# rm -rf /var/cache/nginx/*

3)请求测试

  1. [root@localhost ~]# curl -s -I http://127.0.0.1/login | grep "Nginx-Cache"
  2. Nginx-Cache: MISS
  3. [root@localhost ~]# curl -s -I http://127.0.0.1/login | grep "Nginx-Cache"
  4. Nginx-Cache: MISS
  5. [root@localhost ~]# curl -s -I http://127.0.0.1/login | grep "Nginx-Cache"
  6. Nginx-Cache: MISS

6.缓存日志记录统计
通过日志记录proxy_cache命中情况与对应url

1)修改/etc/nginx/nginx.conf中log_format格式

  1. log_format main '$http_user_agent' '$request_uri' '$remote_addr - $remote_user [$time_local] "$request" '
  2. '$status $body_bytes_sent "$http_referer" '
  3. '"$http_user_agent" "$http_x_forwarded_for"' '"$upstream_cache_status"';

2)查看访问日志(略)

Nginx基础 - 配置缓存web服务的更多相关文章

  1. Nginx基础 - 配置代理web服务

    1.反向代理及负载均衡Nginx实现负载均衡用到了proxy_pass代理模块核心配置,将客户端请求代理转发至一组upstream虚拟服务池. 1)upstream配置语法 Syntax: upstr ...

  2. Nginx基础 - 配置静态web服务

    1.静态参数配置1)文件读取高效sendfile Syntax: sendfile on | off; Default: sendfile off; Context: http, server, lo ...

  3. Nginx基础 - HTTPS安全web服务

    1.HTTPS配置语法 Syntax: ssl on | off; Default: ssl off; Context: http, server Syntax: ssl_certificate fi ...

  4. Nginx作为静态资源web服务之缓存原理

    Nginx作为静态资源web服务之缓存原理 大致理一下http浏览器缓存原理: 浏览器第一次请求服务器,此时浏览器肯定没有缓存,则直接调用服务器端,服务器在返回的信息的信息头中添加 ETag和Last ...

  5. Nginx之静态资源WEB服务

    本篇主要记录学习Nginx的静态资源WEB服务的几种常见的功能记录学习 Nginx开发常用的命令 nginx -tc /etc/nginx/nginx.conf vim /etc/nginx/conf ...

  6. nginx 作为静态资源web服务

    Nginx作为静态资源web服务 静态资源web服务-CDN场景 Nginx资源存储中心会把静态资源分发给“北京Nginx”,“湖南Nginx”,“山东Nginx”. 然后北京User发送静态资源请求 ...

  7. Nginx作为静态资源web服务之防盗链

    Nginx作为静态资源web服务之防盗链 首先,为什么需要防盗链,因为有些资源存在竞争对手的关系,比如淘宝的商品图片,不会轻易的让工具来爬虫爬走收集.但是如果使用防盗链,需要知道上一个访问的资源,然后 ...

  8. Nginx作为静态资源web服务之跨域访问

    Nginx作为静态资源web服务之跨域访问 首先了解一下什么是跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制. 所谓同源是指,域名,协议,端口均相 ...

  9. Nginx作为静态资源web服务之文件读取

    Nginx作为静态资源web服务之文件读取 文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动 ...

随机推荐

  1. Spring框架之事务源码完全解析

    Spring框架之事务源码完全解析   事务的定义及特性: 事务是并发控制的单元,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务将逻辑相关的一组操作绑定在一 ...

  2. python—打开图像文件报错

    今天使用python打开一张图像文件的时候报错了 UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illeg ...

  3. kubectl工具管理应用

    kubectl工具管理应用 创建一个pod [root@k8s-master ~]# kubectl run nginx --replicas=3 --labels="app=nginx-e ...

  4. mysql:如何解决数据修改冲突(事务+行级锁的实际运用)

    摘要:最近做一个接诊需求遇到一个问题,假设一个订单咨询超过3次就不能再接诊,但如果两个医生同时对该订单进行咨询,查数据库的时候查到的接诊次数都是2次,那两个医生都能接诊,所谓接诊可以理解为更新了接诊次 ...

  5. Mac中安装Git

    Mac 安装git 打开Mac终端输入git命令 如果出现以下代码说明已经安装 usage: git [--version] [--help] [-C <path>] [-c <na ...

  6. Python+Selenium+Unittest实现PO模式web自动化框架(8)

    1.main.py模块的功能 最后就是要有一个项目入口,并且是需要加载测试用例集. # --^_^-- coding:utf-8 --^_^-- # @Remark:运行入口 "" ...

  7. Mac下IDEA激活Jrebel

    第一步:在idea中下载jrebel,过程省略 第二步:配置反向代理工具 Windows 版:http://blog.lanyus.com/archives/317.html MAC 版: 安装hom ...

  8. Connection reset by peer的常见原因及解决办法 RST 大文件上传

    Connection reset by peer的常见原因及解决办法 Connection reset by peer的常见原因 - 简书 https://www.jianshu.com/p/263e ...

  9. slice 切片实现 Slice object interface

    1.Python切片对象可以为任意类型 https://github.com/python/cpython/blob/master/Include/sliceobject.h /* Slice obj ...

  10. loj10018数的划分

    题目描述 将整数 n 分成 k 份,且每份不能为空,问有多少种不同的分法.当 n=7,k=3 时,下面三种分法被认为是相同的:1 1 5;1 5 1 ;5 1 1 输入格式 一行两个数 n ,k . ...