国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

nginx緩存服務(wù)器指令介紹

2015-11-13 16:39:11 10232

此篇文章摘抄自網(wǎng)絡(luò):

1.Web緩存的定義.

Web緩存位于內(nèi)容源Web服務(wù)器和客戶端之間,當(dāng)用戶訪問一個URL,Web緩存服務(wù)器會去

后端Web源服務(wù)器取回要輸出的內(nèi)容,然后,當(dāng)下一個請求到來時,如果訪問的是相同的URL

,Web緩存服務(wù)器直接輸出內(nèi)容給客戶端,而不是向源服務(wù)器再次發(fā)送請求.Web緩存降低

了內(nèi)容源Web服務(wù)器,數(shù)據(jù)庫的負(fù)載,減少了網(wǎng)絡(luò)延遲,提高了用戶訪問的響應(yīng)速度,增強(qiáng)了

用戶體驗(yàn).

2.Squid介紹

Web緩存服務(wù)器中,最著名的要數(shù)Squid Cache(簡稱為Squid),Squid是一個流浪的自由軟件的代理服務(wù)器和Web緩存服務(wù)器。

Squid可以作為網(wǎng)頁服務(wù)器的前置cache服務(wù)器緩存相關(guān)請求來提高Web服務(wù)器的速度,

Squid可以為一組人共享網(wǎng)絡(luò)資源而緩存萬維網(wǎng),域名系統(tǒng)和其他網(wǎng)絡(luò)搜索,

Squid可以通過過濾流量幫助網(wǎng)絡(luò)安全,到局域網(wǎng)通過代理上網(wǎng).

3.NginxWeb緩存服務(wù)及和Squid的比較

NginxWeb緩存服務(wù)主要由proxy_cache相關(guān)指令集和fastcgi相關(guān)指令集構(gòu)成

(1)proxy_cache相關(guān)指令集用于反向代理時,對后端內(nèi)容源服務(wù)器進(jìn)行緩存.Nginx

    proxy_cache緩存功能,十分穩(wěn)定,速度不遜于Squid.

(2)fastcgi相關(guān)指令集主要用于對FastCGI的動態(tài)程序進(jìn)行緩存.兩者功能基本一樣.

    在功能上,Nginx已經(jīng)具備Squid所擁有的Web緩存加速功能,清除指定URL緩存功能.而在性能上,Nginx對多核CPU的利用,勝過Squid不少.另外,在反向代理,負(fù)載均衡,健康檢查,端服務(wù)器故障轉(zhuǎn)移,重寫,易用性上,Nginx也比Squid強(qiáng)大很多.這使得一臺Nginx可以同時作為"負(fù)載均衡服務(wù)器""Web緩存服務(wù)器"來使用.

4.proxy_cache相關(guān)指令集

(1)proxy_cache指令 語法: proxy_cache zone_name ;

    該指令用于設(shè)置哪個緩存區(qū)將被使用,zone_name的值為proxy_cache_path指令創(chuàng)建的緩

存區(qū)的名稱.

(2)proxy_cache_path指令語法 proxy_cache_path path [levels=number]

keys_zone=zone_name:zone_size[inactive=time] [max_size=size];

該指令用于設(shè)置緩存文件的存放路徑.:

    proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=cache_one:500m

 

inactive=1d max_size=30g ;

path 存放目錄

levels 指定該緩存空間有兩層hash目錄,第一層目錄為1個字母,第二層目錄為2個字母,保存的文件名會類似/data0/proxy_cache_dir/c/29/XXXXXX ;

keys_zone參數(shù)用來為這個緩存區(qū)起名.

500m 指內(nèi)存緩存空間大小為500MB

inactive1d指如果緩存數(shù)據(jù)在1天內(nèi)沒有被訪問,將被刪除

max_size30g是指硬盤緩存空間為30G

(3)proxy_cache_methods 指令 語法:proxy_cache_methods[GET HEAD POST];

    該指令用于設(shè)置緩存哪些HTTP方法,默認(rèn)緩存HTTP GET/HEAD方法,不緩存HTTP POST 方法

(4)proxy_cache_min_uses指令 語法:proxy_cache_min_uses the_number

    該指令用于設(shè)置緩存的最小使用次數(shù),默認(rèn)值為1

(5)proxy_cache_valid指令 語法: proxy_cache_valid reply_code [reply_code...]time ;該指令用于對不同返回狀態(tài)碼的URL設(shè)置不同的緩存時間.:

proxy_cache_valid 200 302 10m ;

proxy_cache_valid 404 1m ;

設(shè)置200,302狀態(tài)的URL緩存10分鐘,404狀態(tài)的URL緩存1分鐘.

(6)proxy_cache_key指令 語法: proxy_cache_key line ;

    該指令用來設(shè)置Web緩存的Key,Nginx根據(jù)Keymd5哈希存儲緩存.一般根據(jù)$host(域名),$request_uri(請求的路徑)等變量組合成proxy_cache_key .

5.proxy_cache完整示例

(1)首先,把第三方的ngx_cache_purge模塊編譯安裝到Nginx,用來清除指定URL的緩存

    wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.00.tar.gz

    tar zxvf pcre-8.00.tar.gz

    cd pcre-8.00/

    ./configure

    make && make install

    cd ../ 

    wget http://www.tjdsmy.cn/files/ngx_cache_purge-1.0.tar.gz

    tar zxvf ngx_cache_purge-1.0.tar.gz 

    wget http://www.tjdsmy.cn/download/nginx-0.8.32.tar.gz

    tar zxvf nginx-0.8.32.tar.gz

    cd nginx-0.8.32/

    ./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0

    --prefix=/usr/local/webserver/nginx --with-http_stub_status_module

    --with-http_ssl_module

    make && make install

    cd ../

(2)然后,在同一分區(qū)下創(chuàng)建兩個緩存目錄,分別供proxy_temp_path , proxy_cache_path指令設(shè)置緩存路徑.:兩個指定設(shè)置的緩存路徑必須為同一磁盤分區(qū),不能跨分區(qū).

    mkdir -p /data0/proxy_temp_path

    mkdir -p /data0/proxy_cache_path

(3)Nginx配置文件(nginx.conf)對擴(kuò)展名為gif,jpg,jpeg,png,bmp,swf,js,css的圖,flashjavascript , css文件開啟Web緩存,其他文件不緩存.示例代碼如下:

    http{

      proxy_temp_path /data0/proxy_temp_path ;

      #設(shè)置Web緩存區(qū)名稱為cache_one,內(nèi)存緩存空間大小為500M,自動清除超過1天沒有被  

      #訪問的緩存數(shù)據(jù),硬盤緩存空間大小為30G

      proxy_cache_path /data0/proxy_cache_path levels=1:2

      keys_zone=cache_one:200m inactive=1d max_size=30g ; 

     server{

        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$

        {

          #使用Web緩存區(qū)cache_one

          proxy_cache cache_one ;

          #對不同HTTP狀態(tài)碼緩存設(shè)置不同的緩存時間

          proxy_cache_valid 200 304 12h ;

          proxy_cache_valid 301 302 1m ;

          proxy_cache_valid any 1m ;

          #設(shè)置Web緩存的Key,Nginx根據(jù)Keymd5哈希存儲緩存,這里根據(jù)"域名,URI,

          #參數(shù)"組合成Key

          proxy_cache_key $host$uri$is_args$args;

        }

        #用于清除緩存,假設(shè)一個URLhttp://www.tjdsmy.cn/test.gif,通過訪問

        #http://www.tjdsmy.cn/purge/test.gif可以清除該URL的緩存

        location ~ /purge(/.*)

        {

          #設(shè)置只允許指定的IPIP段才可以清除URL緩存

          allow 127.0.0.1 ;

          allow 192.168.0.0/16 ;

          deny all ;

          proxy_cache_purge cache_one $host$1$is_args$args ;

        }

      }

    }

 

6.fastcgi_cache相關(guān)指令集

(1)fastcgi_cache指令

    語法:fastcgi_cache zone_name;

    該指令用于設(shè)置哪個緩存區(qū)將被使用,zone_name的值為fastcgi_cache_path指令創(chuàng)建的緩存區(qū)名稱.

(2)fastcgi_cache_path指令

    語法:fastcgi_cache_path path [levels=number] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]; 該指令用于設(shè)置緩存文件的存放路徑,:

    fastcgi_cache_path /data0/fastcgi_cache_dir levels=1:2

    keys_zone=cache_one:500m inactive=1d max_size=30g ;

    注意這個指令只能在http標(biāo)簽內(nèi)配置,

    levels指定該緩存空間有兩層hash目錄,第一層目錄為1個字母,第二層為2個字母,保存的

    文件名會類似/data0/fastcgi_cache_dir/c/29/XXXX;

    keys_zone參數(shù)用來為這個緩存區(qū)起名,

    500m指內(nèi)存緩存空間大小為500MB;

    inactive1d指如果緩存數(shù)據(jù)在1天內(nèi)沒有被訪問,將被刪除;

    max_size30g是指硬盤緩存空間為30GB

(3)fastcgi_cache_methods指令

    語法:fastcgi_cache_methods [GET HEAD POST] ;

    該指令用于設(shè)置緩存哪些HTTP方法,默認(rèn)緩存HTTP GET/HEAD 方法,不緩存HTTP POST方法

(4)fastcgi_cache_min_uses指令

    語法:fastcgi_cache_min_uses the_number;

    該指令用于設(shè)置緩存的最小使用次數(shù),默認(rèn)值為1.

(5)fastcgi_cache_valid指令

    fastcgi_cache_valid reply_code [reply_code...] time;

    該‎指令用于對不同返回狀態(tài)碼的URL設(shè)置不同的緩存時間.

    fastcgi_cache_valid 200 302 10m ;

    fastcgi_cache_valid 404 1m ;

    設(shè)置200,302狀態(tài)的URL緩存10分鐘,404狀態(tài)的URL緩存1分鐘.如果不指定狀態(tài)碼,直接指定緩存時間,則只有200,301,302狀態(tài)的URL緩存5分鐘.

(6)fastcgi_cache_key指令

    語法:fastcgi_cache_key line ;

    該指令用來設(shè)置Web緩存的Key,Nginx根據(jù)Keymd5哈希存儲緩存.一般根據(jù)FastCGI務(wù)器的地址和端口,$request_uri(請求的路徑)等變量組合成fastcgi_cache_key。 

7.fastcgi_cache完整示例

(1)首先,在同一分區(qū)下創(chuàng)建兩個緩存目錄,分別供

    fastcgi_temp_path,fastcgi_cache_path指令設(shè)置緩存路徑.:兩個指定設(shè)置的緩存路徑必須為同一磁盤分區(qū),不能跨分區(qū).

    mkdir -p /data0/fastcgi_temp_path

    mkdir -p /data0/fastcgi_cache_path

(2)Nginx配置文件(nginx.conf)對擴(kuò)展名為gif,jpg,jpeg,png,bmp,swf,js,css的圖,Flash,JavaScript,CSS文件開啟Web緩存,其他文件不緩存.

    http{

      #fastcgi_temp_pathfastcgi_cache_path指定的路徑必須在同一分區(qū)

      fastcgi_temp_path /data0/fastcgi_temp_path ;

      #設(shè)置Web緩存區(qū)名稱為cache_one,內(nèi)存緩存空間大小為500MB,自動清除超過1天沒有被

     #訪問的緩存數(shù)據(jù),硬盤緩存空間大小為30G

      fastcgi_cache_path /data0/fastcgi_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g ;

      server{

        location ~ .*.(php|php5)$

        {

          #使用Web緩存區(qū)cache_one

          fastcgi_cache cache_one ;

          #對不同的HTTP狀態(tài)碼緩存設(shè)置不同的緩存時間

          fastcgi_cache_valid 200 10m ;

          fastcgi_cache_valid 301 302 1h ;

          fastcgi_cache_valid an 1m ;

          #設(shè)置Web緩存的key,Nginx根據(jù)keymd5哈希存儲緩存,這里根據(jù)"FastCGI服務(wù)器的IP,端口,請求的URI"組合成Key

          fastcgi_cache_key 127.0.0.1:9000$requet_uri ;

          #FastCGI服務(wù)器

          fastcgi_pass 127.0.0.1:9000 ;

          fastcgi_index index.php ;

          include fcgi.conf ;

        }

      }

    }

提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: