1. 程式人生 > >Nginx反向代理快取配置

Nginx反向代理快取配置

Nginx反向代理的快取配置這裡給出示例詳解。

  1. http {
  2. proxy_cache_path  /data/nginx/cache/one  levels=1:2   keys_zone=one:10m max_size=10g;
  3. proxy_cache_key  "$host$request_uri";
  4. server {
  5.     server_name www.centos.bz centos.bz;
  6.     root /home/www.centos.bz/web;
  7.     index index.php index.html index.htm;
  8.     location / {
  9.         proxy_pass http://127.0.0.1:8080;
  10.         proxy_set_header  Host "www.centos.bz";
  11.         proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  12.         #開啟反向代理快取,並使用zone name為one的快取。
  13.         proxy_cache one;
  14.         #設定狀態碼為200 302過期時間為10分鐘
  15.         proxy_cache_valid  200 302  10m;
  16.         #設定狀態碼404的過期時間為1分鐘
  17.         proxy_cache_valid  404      1m;
  18.     }
  19.     #清除快取
  20.     location ~ /purge(/.*) {
  21.         #允許的IP
  22.         allow 127.0.0.1;
  23.         deny all;
  24.         proxy_cache_purge one $host$1$is_args$args;
  25.     }
  26. }
  27. }

反向代理的快取主要涉及以下幾個命令:
proxy_cache_path proxy_cache_key proxy_cache proxy_cache_valid。

proxy_cache_path
這個是設定快取的目錄,語法如下:
proxy_cache_path path [ levels = levels ] keys_zone = name : size [ inactive = time ] [ max_size = size ] [ loader_files = number ] [ loader_sleep = time ] [ loader_threshold = time ]
可放置的上下文:
http
引數解釋:
[ levels = levels ]:
設定快取目錄層數,如levels=1:2,表示建立兩層目錄快取,最多建立三層。第一層目錄名取proxy_cache_key md5的最後一個字元,第二層目錄名取倒數2-3字元,如:
proxy_cache_key md5為b7f54b2df7773722d382f4809d65029c,則:
levels=1:2為/data/
nginx
/cache/c/29/b7f54b2df7773722d382f4809d65029c
levels=1:2:3為/data/nginx/cache/c/29/650/b7f54b2df7773722d382f4809d65029c

keys_zone = name : size:
定義快取區域名稱及大小,快取名稱用於proxy_cache指令設定快取放置在哪,如proxy_cache one,則把快取放在zone名稱為one的快取區,即proxy_cache_path指定的具體位置。

proxy_cache_key
這個指令是設定以什麼引數md5得到快取的檔名,預設為$scheme$proxy_host$request_uri,即以協議、主機名、請求uri(包含引數)作md5得出快取的檔名。
proxy_cache_key與下面的清快取功能(purge cache)有很大關係。
可放置在上下文,http server location
proxy_cache
反向代理快取設定指令,語法proxy_cache zone | off,預設為off。上下文:http server location。
可以放到指定location,這樣匹配此location的url才被快取。
proxy_cache_valid
設定指定狀態碼的快取時間,語法proxy_cache_valid [ code ...] time。

另外,清快取需要安裝外掛ngx_cache_purge,安裝方法如下:

  1. cd /tmp
  2. wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
  3. tar xzf ngx_cache_purge-2.1.tar.gz
  4. cd /tmp
  5. wget http://nginx.org/download/nginx-1.4.2.tar.gz
  6. tar xzf nginx-1.4.2.tar.gz
  7. cd nginx-1.4.2
  8. ./configure --prefix=/usr/local/nginx  --add-module=/tmp/ngx_cache_purge-2.1
  9. make && make install