国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

Nginx服務器作反向代理時的緩存配置要點解析

2024-08-30 12:28:06
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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.survivalescaperooms.com vevb.com;  root /home/www.survivalescaperooms.com/web;  index index.php index.html index.htm;  location / {    proxy_pass http://127.0.0.1:8080;    proxy_set_header Host "www.survivalescaperooms.com";    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。
1.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
2.keys_zone = name : size:
定義緩存區域名稱及大小,緩存名稱用于proxy_cache指令設置緩存放置在哪,如proxy_cache one,則把緩存放在zone名稱為one的緩存區,即proxy_cache_path指定的具體位置。
3.proxy_cache_key
這個指令是設置以什么參數md5得到緩存的文件名,默認為$scheme$proxy_host$request_uri,即以協議、主機名、請求uri(包含參數)作md5得出緩存的文件名。
proxy_cache_key與下面的清緩存功能(purge cache)有很大關系。
可放置在上下文,http server location
4.proxy_cache
反向代理緩存設置指令,語法proxy_cache zone | off,默認為off。上下文:http server location。
可以放到指定location,這樣匹配此location的url才被緩存。
5.proxy_cache_valid
設置指定狀態碼的緩存時間,語法proxy_cache_valid [ code …] time。
另外,清緩存需要安裝插件ngx_cache_purge,安裝方法如下:

 

cd /tmpwget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gztar xzf ngx_cache_purge-2.1.tar.gzcd /tmpwget http://nginx.org/download/nginx-1.4.2.tar.gztar xzf nginx-1.4.2.tar.gzcd nginx-1.4.2./configure --prefix=/usr/local/nginx --add-module=/tmp/ngx_cache_purge-2.1make && make install

緩存過期時間
在配置的時候,有如下三個地方可以設置緩存過期時間:

1.inactive=1d
2.proxy_cache_valid 200 304 1h
3.expires 10m
其實解釋起來很簡單:

inactive=1d 是指多久未訪問以后清除緩存
proxy_cache_valid 200 304 1h 是指距離緩存產生時間多久以后清除緩存
expires 10m 這個不是控制服務器端的,而是指在Http Response header里指定的過期時間,是給客戶端看的。
temp的問題
Nginx進行反代的時候,遇到超出文件大小 proxy_buffer_size 的時候,是一次性把文件都加載到Temp目錄,然后再發送給用戶。

如果設置了 proxy_buffering off 則不會加載到Temp目錄,而是同步的從上游進行加載。

可以通過設置 proxy_max_temp_file_size 參數來設置最大可以緩存的文件大小。

206 和 Byte Range 的問題
Byte Range允許客戶端向服務器請求一部分文件,而不是整個文件。大部分支持多線程下載和斷點下載的軟件都是用的這個功能。這個時候服務器返回的Http Code是206 Partial Requests.

但是Nginx做反代的時候,如果沒有好好的設置,這個功能可能會引來Dos攻擊。

因為默認做反代的時候,Nginx向后端服務器請求的時候是不會把 Range 參數加上的,而是會去請求整個文件,比方說有一個1G的文件,每次請求1M,Nginx會在每次請求的時候去后端請求一個完整的1G文件,然后取出其中的1M發給客戶端,這個時候中間的流量會暴增,導致整個服務器宕機。今天因為這個問題導致我檢查了很久。

解決方案也很簡單,把 Range 加到Header里就行了。

proxy_set_header Range $http_range;proxy_set_header If-Range $http_if_range;proxy_no_cache $http_range $http_if_range;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铁岭市| 三门峡市| 巫山县| 绥中县| 婺源县| 九台市| 民乐县| 岱山县| 安泽县| 陇西县| 惠水县| 兴义市| 郓城县| 乐东| 金湖县| 呼和浩特市| 大城县| 分宜县| 和平县| 丹江口市| 遵义县| 乌拉特中旗| 嘉定区| 宁远县| 南靖县| 梁平县| 滁州市| 霸州市| 宁晋县| 鄂伦春自治旗| 延津县| 苏尼特左旗| 墨竹工卡县| 灌阳县| 瓮安县| 瑞昌市| 黎平县| 延安市| 蒙自县| 宝丰县| 天祝|