nginx 07-Nginx缓存服务

Nginx缓存服务配置语法

proxy_cache_path path kes_zone=name:size 
[levels=levels] 
[use_temp_path=on|off]
[inactive=time]
[max_size=size]
[manager_files=number]
[manager_sleep=time]
[manager_threshold=time]
[loader_files=number]
[loader_sleep=time]
[loader_threshold=time]
[purger=on|off]
[purger_files=number]
[purger_sleep=time]
[purger_threshold=time]
(http)
proxy_cache zone|off;
(http、server、location)
proxy_cache_valid [code..] time;
(http、server、location)
作用:缓存过期周期
proxy_cache_key string;
(http、server、location)
作用:缓存维度,默认:proxy_cache_key $scheme$proxy_host$request_uri

Nginx缓存服务配置案例

http{
    upstream test {
        server 192.168.10.10:8080 down;
        server 192.168.10.10:8081 max_fails=1 fail_timeout=10s;
        server 192.168.10.11:8080 backup;
    }
    
    proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off;
    server {
        listen 80;
        server_name location;
        location / {
        proxy_cache off;
            proxy_pass http://test;
            proxy_cache_valid 200 304 12h;
            proxy_cache_valid any 10m;
            proxy_cache_key $host$uri$is_args$args;
            add_header  Nginx-Cache "$upstream_cache_status";  
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        }
    }
}

如何清理指定缓存

  • 方法1:rm -rf 缓存目录内容
  • 方法2:第三方扩展模块ngx_cache_purge

如何让部分页面不缓存

  • 配置语法:
proxy_no-cache string ...;
(http、server、location)
  • 配置案例:
server {
    listen 80;
    server_name location;
    
    if ($request_uri ~ ^/(url3|login|register|password\/reset)) {
        set $cookie_nocche 1;
    }
    location / {
    proxy_cache off;
        proxy_pass http://test;
        proxy_cache_valid 200 304 12h;
        proxy_cache_valid any 10m;
        proxy_cache_key $host$uri$is_args$args;
        proxy_no_cache $cookie_nocche $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
        add_header  Nginx-Cache "$upstream_cache_status";  
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    }
}

大文件分片请求

  • 配置语法:
slice size;
(http、server、location) 默认:slice 0
  • 优势:

        每个子请求收到的数据都会形成一个独立文件,一个请求断了,其他请求不受影响
  • 缺点:

        当文件很大或者slice很小的时候,可能会导致文件描述符耗尽等情况
posted @ 2019-04-09 15:20  瞎搞的富哥  阅读(163)  评论(0编辑  收藏  举报