nginx配置反向代理缓存

说明

最近运维一个网站里面含有不经常变化的小图片,而每次请求都需要调用file接口获取不太合适。所以就想利用nginx的反向代理缓存来减轻服务接口的请求压力。

工作原理

Nginx反向代理缓存,当客户端向Nginx服务器发送请求时,nginx根据请求的URI可以加一层缓存,可缓存动态请求,当缓存存在时Nginx直接将缓存返回给客户端,而不请求服务接口,这样可以使服务器压力降低。

如何配置?

  • 在http节点下添加
# 反向代理缓存配置
    client_body_buffer_size 512k;
    proxy_connect_timeout 5;
    proxy_read_timeout 60;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_temp_path D:/tmp;
    proxy_cache_path D:/tmp/cache levels=1:2 keys_zone=cache_one:200m inactive=7d max_size=50g;

proxy_cache_path:表示生成的缓存文件存放的路径,该路径是预先就要创建好的
levels=1:2 : 设置在相对于path指定目录的第几级hash目录中缓存数据,levels=1,表示一级hash目录,levels=1:2,表示两级hash目录。

  • 在server节点下添加
location ~ / {
             proxy_pass http://127.0.0.1:9001;
			 if ($request_uri ~ ^/(article|category)) {
				set $cookie_nocache 1;
			 }
			 if ($request_uri = /) {
				set $cookie_nocache 1;
			 }
             proxy_cache cache_one;
             proxy_cache_valid 200 304 7d; #正常状态缓存时间7天
             proxy_cache_key $host$uri$is_args$args;
			 proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
             proxy_no_cache $http_pargma $http_authorization;
             add_header	Nginx-Cache	"$upstream_cache_status";
			 
			 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_pass 配置的反向代理。
proxy_cache cache_one; 指定用哪个缓存,这地方就是上面配置的。
两个if条件表达式过滤了部分请求不缓存。

如何确定已生效?

  • 重启nginx,刷新请求发现缓存路径下已生成了文件:
    在这里插入图片描述

  • 未命中缓存的请求
    在这里插入图片描述

  • 已命中缓存的请求
    在这里插入图片描述

posted @ 2020-12-23 09:32  一锤子技术员  阅读(9)  评论(0编辑  收藏  举报  来源