资讯专栏INFORMATION COLUMN

Nginx--proxy cache使用

zhangke3016 / 1600人阅读

摘要:使用项目中采用作为代理服务器,静态接口的数据都缓存在中,这样可以有效减小源服务器的负载。忽略头部这里有几个要注意的地方定制的时,一定要注意谨慎使用值变化范围比较大的参数。这里忽略掉这个头部才能使生效。配置完成后,重启,至此,已经启用。

Nginx--proxy cache使用

项目中采用Nginx作为代理服务器,静态接口的数据都缓存在nginx中,这样可以有效减小源服务器的负载。在这里整理一下Nginx proxy cache的配置。

nginx proxy cache 原理

nginx.conf中配置proxy_cache:

proxy_temp_path   /data/nginx_cache/proxy_cache/proxy_temp_dir;

proxy_cache_path  /dev/shm/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=2d max_size=2g;

proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504 http_404;

proxy_cache_path 缓存文件路径

levels 设置缓存文件目录层次;levels=1:2 表示两级目录

keys_zone 设置缓存名字和共享内存大小

inactive 在指定时间内没人访问则被删除

max_size 最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。

proxy_temp_path : 使用temp_path存储,如果不使用,则配置在max_size后 use_temp_path=off;

在location中使用proxy cache:

    location ^~ /static/  {
                ... ...
                
                #定制proxy_cache的key,去除imei和sn等个性化参数。 
                set $custom_proxy_cache_key $host$uri$is_args$args;
                include vhosts/customize_proxy_cache_key;
                
                #忽略Expires、Set-Cookie头部
                proxy_ignore_headers Expires Set-Cookie;
                proxy_cache cache_one;
                proxy_cache_valid 200 304 10m;
                proxy_cache_key $custom_proxy_cache_key;
                add_header X-Proxy-Cache $upstream_cache_status;
                expires 10m;
                
                ... ...
                }

这里有几个要注意的地方:

定制cache的key时,一定要注意:**谨慎使用值变化范围比较大的参数**。因为,这里使用参数的值作为cache的key的,当值变化返回很大的时候,一方面会导致缓存文件变得很大,另一方面缓存也就失去意义。    


这里有一个知识点:
源服务器是通过Set-Cookie来告诉浏览器cookie的信息,包括cookie值,path,以及域。只要浏览器查看请求满足本地cookie的域,就把这个cookie携带入头部传给server。这里忽略掉这个头部才能使nginx proxy_cache 生效。

上边customize_proxy_cache_key具体配置如下:

set $custom_params $query_string;
#nginx缓存key去除imei
if ( $custom_params ~ ^(.*)(&imei=[^&]+)(.*)$) {
        set $a $1;
        set $c $3;
        set $custom_params "${a}${c}";
}
set $custom_proxy_cache_key $host$uri$is_args$custom_params;

这里,就将参数中的imei和sn用户唯一值的参数去除,保证cache健康。

配置完成后,重启nginx,至此,nginx cache已经启用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39843.html

相关文章

  • nginx(三):反向代理篇

    摘要:反向代理模块何为反向代理接收客户端请求,并把请求交给后端服务器处理,后端服务器处理完成后,响应通过反向代理服务器返回给客户端。作为反向代理服务器经常要配置一组服务器,以实现负载均衡。 1、nginx反向代理模块 何为反向代理?接收客户端请求,并把请求交给后端服务器处理,后端服务器处理完成后,响应通过反向代理服务器返回给客户端。反向代理可实现局域网中的服务器可被公网中的客户端访问,也可实...

    cloud 评论0 收藏0
  • nginx proxy cache配置参数解读

    序 本文主要解析一下nginx ngx_http_proxy_module中的cache相关配置参数。 proxy_cache 名称 默认配置 作用域 官方说明 中文解读 模块 proxy_cache proxy_cache off; http, server, location Defines a shared memory zone used for caching. The sam...

    alanoddsoff 评论0 收藏0
  • 精通Nginx(二)

    摘要:启用或禁用反应是否启用压缩响应报文不是所有浏览器都支持压缩机制设置一个响应的压缩级别。可接受的值在到之间。 博文参考 http://wiki.nginx.org/HttpUpstreamConsistentHash http://wiki.nginx.org/HttpUpstreamFairModule http://wiki.nginx.org/HttpUpstreamRequest...

    nidaye 评论0 收藏0
  • 精通Nginx(二)

    摘要:启用或禁用反应是否启用压缩响应报文不是所有浏览器都支持压缩机制设置一个响应的压缩级别。可接受的值在到之间。 博文参考 http://wiki.nginx.org/HttpUpstreamConsistentHash http://wiki.nginx.org/HttpUpstreamFairModule http://wiki.nginx.org/HttpUpstreamRequest...

    UnixAgain 评论0 收藏0

发表评论

0条评论

zhangke3016

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<