Nginx深刻了解-進階(四)

Nginx一樣能夠用來做爲緩存服務;客戶端瀏覽器緩存咱們稱之爲客戶端緩存,後端使用Redis、Memcache等緩存服務咱們稱之爲後端緩存,同理Nginx做爲緩存服務咱們就稱之爲代理緩存。
一,Nginx做爲代理緩存的流程示意圖:

nginx

  • 配置語法:
Syntax:proxy_cache_path path [levels=levels]

[use_temp_path = on|off] keys_zone=name:size [inactive = time]nginx

[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];cookie

Default:--url

Context:httpspa

  • proxy_cache配置語法:
Syntax:proxy_cache zone|off;

Default:proxy_cache off;3d

Context:http、server、location代理

  • 緩存過時週期:
Syntax:proxy_cache_valid [code...] time;

Default:--

Context:http、server、location

  • 緩存維度:
Syntax:proxy_cache_key string;

Default:proxy_cache_key $schema$proxy_host$request_uri; // 協議+主機+url

Context:http、server、location

二,配置實例
http {
    ......
    proxy_cache_path /var/cache levels=1:2 keys_zone=test_cache:10m max_size=10g inactive=60m use_temp_path=off; #60m是指60分鐘,1:2兩級目錄,test_cache開闢的空間名稱
    server {
        listen 80;
        server_name localhost;
        access_log /var/logs/access.log main;

        location / {
            proxy_cache test_cache;
            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"; # 增長頭信息 key(Nginx-Cache) value($upstream_cache_status)

            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 當出現5xx,超時,錯誤等時,跳過直接訪問下一臺服務器
            include proxy_params;
        }
    }
}
三,清理指定緩存信息

使用第三方模塊ngx_cache_purge來實現。

四,部分頁面不緩存,好比登陸註冊頁不但願緩存,能夠使用proxy_no_cache實現
Syntax:proxy_no_cache string ...;

Default:---;

Context:http、server、location;

  • 配置實例:
server {
    ......
    if ($request_uri ~ ^/(login|register|password\/reset)) {
        set $cookie_nocache 1;
    }

    location / {
        proxy_cache test_cache;
        proxy_cache_valid 200 304 12h;
        proxy_cache_valid any 10m;
        proxy_cache_key $host$uri$is_args$args;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
        add_header Nginx-Cache "$upstream_cache_status"; # 增長頭信息 key(Nginx-Cache) value($upstream_cache_status)

        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 當出現5xx,超時,錯誤等時,跳過直接訪問下一臺服務器
        include proxy_params;
    }
}
五,大文件分片請求混存

優點:每一個子請求收到的數據都會造成一個獨立的文件,一個請求斷了,其餘請求不受影響。

缺點:當文件很大時或者slice很小時,可能會致使文件描述符耗盡等狀況。

相關文章
相關標籤/搜索