天天看點

nginx proxy_cache 多盤負載均衡

現在,假設我們有一台伺服器,挂了3塊硬碟,我們希望把該伺服器用作“緩存代理”,緩存後端伺服器的全部響應資訊。預期的緩存資料量遠大于可用的記憶體。它實際上是我們個人CDN的一個緩存節點。毫無疑問,在這種情況下,最重要的事情是發揮硬碟的最大性能。

我們的選擇之一是配置一個RAID陣列。這種方法毀譽參半,現在,有了NGINX,我們可以有其他的選擇:
      
# 我們假設每塊硬碟挂載在相應的目錄中:/mnt/disk1、/mnt/disk2、/mnt/disk3

proxy_cache_path /mnt/disk1 levels=: keys_zone=cache_1:m max_size=G
                 use_temp_path=off;
proxy_cache_path /mnt/disk2 levels=: keys_zone=cache_2:m max_size=G
                 use_temp_path=off;
proxy_cache_path /mnt/disk3 levels=: keys_zone=cache_3:m max_size=G
                 use_temp_path=off;
           
split_clients $request_uri $disk {
    %     ;
    %     ;
    *         ;
}

location / {
    proxy_pass http://backend;
    proxy_cache_key $request_uri;
    proxy_cache cache_$disk;
}