Nginx反向代理快取配置
阿新 • • 發佈:2019-01-29
Nginx反向代理的快取配置這裡給出示例詳解。
- http {
- proxy_cache_path /data/nginx/cache/one levels=1:2 keys_zone=one:10m max_size=10g;
- proxy_cache_key "$host$request_uri";
- server {
- server_name www.centos.bz centos.bz;
- root /home/www.centos.bz/web;
- index index.php index.html index.htm;
- location / {
-
proxy_pass http://127.0.0.1:8080;
- proxy_set_header Host "www.centos.bz";
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- #開啟反向代理快取,並使用zone name為one的快取。
- proxy_cache one;
- #設定狀態碼為200 302過期時間為10分鐘
- proxy_cache_valid 200 302 10m;
- #設定狀態碼404的過期時間為1分鐘
-
proxy_cache_valid 404 1m;
- }
- #清除快取
- location ~ /purge(/.*) {
- #允許的IP
- allow 127.0.0.1;
- deny all;
- proxy_cache_purge one $host$1$is_args$args;
- }
- }
- }
反向代理的快取主要涉及以下幾個命令:
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/
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,安裝方法如下:
- cd /tmp
- wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
- tar xzf ngx_cache_purge-2.1.tar.gz
- cd /tmp
- wget http://nginx.org/download/nginx-1.4.2.tar.gz
- tar xzf nginx-1.4.2.tar.gz
- cd nginx-1.4.2
- ./configure --prefix=/usr/local/nginx --add-module=/tmp/ngx_cache_purge-2.1
- make && make install