美文网首页
Nginx常见使用场景-缓存服务器(七)

Nginx常见使用场景-缓存服务器(七)

作者: andpy | 来源:发表于2018-05-25 09:08 被阅读29次

    nginx缓存服务器

    // 定义目录 空间大小,名字
    Syntax:proxy_cache_path path[levels=levels]
    [use_temp_path=on|off] keys_zone=name:size [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]
    Default:-
    Context:http
    
    //proxy_cahe配置
    Syntax:proxy_cache zone | off;
    Default:proxy_cache off;
    Context:http,server,location
    
    //缓存过期周期
    Syntax:proxy_cache_valid [code...] time;
    Default:-
    Context:http,server,location
    
    //缓存的纬度 缓存那些信息
    Syntax:proxy_cache_key string;
    Default:proxy_cache_key $scheme$proxy_host$request_uri;
    Context:http,server,location
    
    
    //示例
    upstream applelife{
        server 192.168.9.1:8001;
        server 192.168.9.1:8002;
        server 192.168.9.1:8003;
    }
    #需要首先配置 缓存目录,文件目录层级2级,空间名字 10m大小,目录最大大小(超过启动nginx自己的淘汰规则),在60分钟的时间内没有被访问就会被清理,存放临时文件
    proxy_cache_path /opt/app/cache levels=1:2 keys_zone=applelife_cache:10m max_size=10g inactive=60m use_temp_path=off;
    
    server{
        ...
        location / {
            #开启缓存
            proxy_cache applelife_cache;
            #基于代理的方式
            proxy_pass http://applelife;
            #对于返回200 304的消息过期时间为12小时
            proxy_cache_valid 200 304 12h;
            #除了以上的状态过期时间为10分钟
            proxy_cache_valid any 10m
            #缓存时那些作为 key
            proxy_cahce_key $host$uri$is_args$args;
            #添加头信息
            add_header Nginx-Cache "$upstream_cache_status";
            
            #当目标服务器返回 错误500等信息,跳过该台服务器,直接访问下一台
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            include proxy_params;
        }
        ...
    
    }
    

    清理指定缓存
    方式一, rm -rf 缓存目录内容

    方式二,第三方扩展模块 ngx_cache_purge

    让部分页面不缓存

    //语法
    Syntax:proxy_no_cache string ...,
    Default:-
    Context:http,server,location
    
    
    //示例
    upstream applelife{
        server 192.168.9.1:8001;
        server 192.168.9.1:8002;
        server 192.168.9.1:8003;
    }
    #需要首先配置 缓存目录,文件目录层级2级,空间名字 10m大小,目录最大大小(超过启动nginx自己的淘汰规则),在60分钟的时间内没有被访问就会被清理,存放临时文件
    proxy_cache_path /opt/app/cache levels=1:2 keys_zone=applelife_cache:10m max_size=10g inactive=60m use_temp_path=off;
    
    server{
        ...
            
        #如果url中包含以下路径参数,那么 cookie_nocache 的值为1
        if($request_uri ~^/(url3|login|register|password\/reset)){
            set $cookie_nocache 1;
        }
        
    
        location / {
            #开启缓存
            proxy_cache applelife_cache;
            #基于代理的方式
            proxy_pass http://applelife;
            #对于返回200 304的消息过期时间为12小时
            proxy_cache_valid 200 304 12h;
            #除了以上的状态过期时间为10分钟
            proxy_cache_valid any 10m
            #缓存时那些作为 key
            proxy_cahce_key $host$uri$is_args$args;
            
    
            #部分不设置缓存 cookie_nocache上面配置的参数,    cookie_nocache不为0或者空  那么是不会进行缓存的
            proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
            proxy_no_cache $http_pragma $http_authorization;
    
    
            #添加头信息
            add_header Nginx-Cache "$upstream_cache_status";
            #当目标服务器返回 错误500等信息,跳过该台服务器,直接访问下一台
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            include proxy_params;
        }
        ...
    
    }   
    

    大文件分片请求
    优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他的请求不受到影响
    缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽的情况。

    //语法
    syntax:slice size;
    Default:slice 0;
    Context:http,server,location
    
    //查看启动的端口
    netstat -luntp |grep 800
    

    相关文章

      网友评论

          本文标题:Nginx常见使用场景-缓存服务器(七)

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