nginx 的 proxy_cache 缓存配置

 有个项目用到了百度语音接口,由于功能比较小所以不想在服务端写,打算直接用 js 调百度接口,然后用 nginx 代理解决跨域问题,那么token怎么办 token肯定是要缓存起来的 又不能缓存在浏览器里,于是就试了试 nginx 的 proxy_cache:



# proxy_cache_path 缓存的基本配置,需要放在 server 的外面,下面是配置项
# 缓存文件路径:/data/nginx/cache(自定义)
# keys_zone 设置缓存名字和共享内存大小 one-cache:50m
# levels 设置缓存文件目录层次;levels=1:2 表示两级目录
# inactive 删除指定时间内未被访问的缓存文件
# max_size 缓存硬盘空间最多为 200m,如果缓存空间满,默认覆盖掉缓存时间最长的资源。

# 下面两项是 nginx 启动时加载缓存的参数
# loader_threshold 加载器每次迭代过程最多执行300毫秒
# loader_files 加载器每次迭代过程中最多加载200个文件



proxy_cache_path /data/nginx/cache keys_zone=one-cache:50m levels=1:2 
                 inactive=7d loader_threshold=300 loader_files=200 max_size=200m;

#百度语音识别接口跨域代理
server {
    listen 80;
    server_name  vop-baidu.proxy.abc.com;


    add_header Access-Control-Allow-Origin *; 
    add_header Access-Control-Allow-Headers X-Requested-With,content-type;
    add_header Access-Control-Allow-Methods GET,POST; #,OPTIONS;
    add_header Access-Control-Max-Age 99999999;

    location / {
        proxy_pass  http://vop.baidu.com;

   }

   #百度语音 token
   location /token {
                
                proxy_cache one-cache; # 使用名称为one-cache的缓存(必须)
                proxy_cache_methods GET HEAD POST; #配置需要缓存的方法 默认GET|HEAD
                proxy_cache_valid 200 302 10d; # 对200和302状态的请求缓存10天,any 表示所有状态
                proxy_cache_key $uri; # 定义缓存key 默认是请求URL

                #****很重要*** 此项适用于配置要忽略的proxy_pass目标服务器的响应 header 项,
                #当目标服务器设置了 Cache-Control或Set-Cookie header等项时 则响应
                #不会被缓存或影响缓存策略,所以这里选择忽略
                proxy_ignore_headers Cache-Control Set-Cookie; 

                proxy_pass  https://openapi.baidu.com/oauth/2.0/token?xxxxxxx;
        }
}


 

配置好后,记得创建缓存文件目录(/data/nginx/cache , cache 这一层 nginx 可以自动创建),然后重启 nginx ,请求相关链接检查配置是否生效,生效则缓存目录会出现缓存文件:

231529_Eq2l_2399303.png

 

还有一些高级配置项, proxy_no_cacheproxy_cache_bypass,proxy_cache_purge,proxy_pass_headers,proxy_hide_headers,proxy_cache_background_update。。。用到的时候在详细研究吧。

 

参考:

https://blog.csdn.net/dengjiexian123/article/details/53386586

https://www.jianshu.com/p/625c2b15dad5

https://www.nginx.com/blog/nginx-caching-guide/

转载于:https://my.oschina.net/u/2399303/blog/1649475

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值