美文网首页
nginx设置proxy cache

nginx设置proxy cache

作者: yuansc | 来源:发表于2015-12-02 19:56 被阅读832次
    nginx.png

    引言

    平常我们在web服务中或多或少会用到cache,这次我们说的便是nginx cache。在代理层上的cache,有别于redis或memcache那种业务cache,nginx cache多用于静态资源的cache。
    什么是nginx 在哪里配置cache,我们就省略了,我们直接讲重点。

    详情

    • 开启Cache
      在nginx.conf中加入如下代码
    proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:200m
        inactive=24h  max_size=1g;
    

    proxy_cache_path指的是存放cache的位置,如果没有此文件夹,重启nginx会报错
    keys_zone=STATIC:200m 表示这个zone名称为STATIC,分配的内存大小为200MB
    inactive=24h表示这个zone中的缓存文件如果在1天内都没有被访问,那么文件会被cache manager进程删除掉

    • max_size=1g 表示最大缓存大小为1G
    • 对于指定的域名加上cache

    我们直接上实际加入的nginx配置

    location ~* (/gateway/v1/phone/getAppOtherTimeNews*|/gateway/v1/phone/newscontent*)  {
                   
                     client_body_buffer_size      500M;
          
                  proxy_cache STATIC;
                    proxy_cache_key $host$uri$is_args$args;
                    proxy_cache_valid 200 304 10m;
                    add_header Access-Control-Allow-Origin *;
                    proxy_read_timeout 300;
                    proxy_connect_timeout 300;
                    proxy_redirect     off;
    
                    proxy_set_header   X-Forwarded-Proto $scheme;
                    proxy_set_header   Host              $http_host;
                    proxy_set_header   X-Real-IP         $remote_addr;
                    rewrite /gateway/v1(.+)$ $1 break;
    
                    proxy_pass http://localhost:7700;
            }
    
    
            location /gateway/v1  {
            client_body_buffer_size      500M;
            add_header Access-Control-Allow-Origin *;
                    proxy_read_timeout 300;
                    proxy_connect_timeout 300;
                    proxy_redirect     off;
    
                    proxy_set_header   X-Forwarded-Proto $scheme;
                    proxy_set_header   Host              $http_host;
                    proxy_set_header   X-Real-IP         $remote_addr;
                    rewrite /gateway/v1(.+)$ $1 break;
    
                    proxy_pass http://localhost:7700;
            }
    

    上面我们只对于符合 /gateway/v1/phone/getAppOtherTimeNews*|/gateway/v1/phone/newscontent*这个正则表达式的路径进行缓存,所以我们也只需要关注这个location里面的即可,对于不符合此正则表达式的会自动路由到下面的访问中。
    这里的关键参数就是下面这三个。

    proxy_cache STATIC; 
    proxy_cache_key $host$uri$is_args$args; 
    proxy_cache_valid 200 304 10m;
    

    proxy_cache 表示缓存的空间,与前面配置的keys_zone相符
    proxy_cache_key 表示缓存的位置,有点类似于索引的意思
    proxy_cache_valid 则表示缓存code为200的时间为10 分钟

    这样,我们只要把配置加上,我们的缓存服务就OK了。

    相关文章

      网友评论

          本文标题:nginx设置proxy cache

          本文链接:https://www.haomeiwen.com/subject/jxfshttx.html