5.Nginx做爲web緩存服務器

Nginx做爲web緩存服務器php

         從0.7.48版本開始,Nginx支持相似Squid的緩存功能。Nginx的web緩存服務主要由proxy_cache相關命令集合fastcgi_cache相關命令集構成,前者用於反向代理時對後端內容源服務器進行緩存,後者主要用於對FastCGI的動態程序進行緩存。此外,若是不想使用Nginx自帶的緩存功能,也可以使用第三方模塊ngx_slowfs_cache來實現緩存服務器的配置。html

 

  1. nginx下安裝緩存服務器

這裏使用Nginx自帶的緩存模塊,經過proxy命令來實現數據的緩存,因此在編譯的時候要加上ngx_cache_purge模塊,這個第三方模塊是清理Nginx緩存的一個插件。nginx

在網上下載ngx_cache_purge插件的最新版本,而後從新編譯安裝nginx。web

./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.31 --add-module=/usr/local/src/ngx_cache_purge-2.3(文件解壓後存放的位置)後端

 

  1. 配置Nginx緩存服務器

Nginx緩存服務器的配置主要經過proxy_cache相關命令來實現。數組

proxy_cache_path /backup/proxy_cache_dir levels=1:2 keys_zone=cache_one:4096m inactive=1d max_size=3g;緩存

  • poxy_cache_path:用於設置緩存的目錄,後面跟緩存路徑。最好將緩存目錄放在一個獨立的硬盤上。
  • levels=1:2:levels用來設置目錄深度,這裏是兩層目錄深度,第一層是一個字符,第二層是兩個字符。
  • keys_zne:用來設置web緩存區名稱,這裏的cache_one後面的4096,表示內存緩存空間大小爲4GB
  • inactive:表示自動清除緩存文件的時間,這裏的「d」表示1天沒有被訪問的內容自動清除,還能夠使用分鐘和小時計數,5m,5h。
  • max_size:表示硬盤緩存空間可以使用的最大值,默認狀況下經訪問的文件常將被放到內存中進行緩存,而在內存緩存空間不足時,Nginx會將不常常訪問的數據從內存寫到磁盤。

 

proxy_temp_path /backup/proxy_temp_dir;服務器

  • 用於指定臨時緩存文件的存儲路徑,這裏須要注意的是,兩個存放緩存文件的目錄必須在同一磁盤分區。

 

location / {memcached

    root   html;ui

    index  index.html index.htm index.php;

    proxy_cache cache_one;           #反向代理緩存設置命令,語法爲「proxy_cache zone|off「,默認爲off,須要將proxy_cache命令放在location字段,這樣匹配以此location的url才能被緩存。

    proxy_cache_valid 200 304 12h;       #對不懂HTTP狀態碼設置不一樣的緩存時間

    proxy_cache_key $host$uri$is_args$args;      #這個命令是設置以什麼樣的參數獲得緩存的文件名,默認爲」$scheme$proxy_host$request_uri」,表示以協議,主機名,請求uri(包括參數)作MD5得出緩存的文件名。這裏以域名,URI,參數組合成Web緩存的key值,nginx會根據key哈希,存儲緩存內容到二級緩存目錄內

    }

        

         下面配置手動清除緩存策略:

         location ~ /purge(/.*) {

        allow 127.0.0.1;

        allow 192.168.1.0/24;

        deny all;

        proxy_cache_purge cache_one $host$1$is_args$args;

}

這裏設置能夠清除緩存的ip和網段,下面說的是清除的內容

         location ~ \.php?$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;

            include        fastcgi_params;

}

.php結尾的文件不用緩存

手動清除緩存的方法

http://192.168.1.120/index.html                                                  訪問

http://192.168.1.120/purge/index.html                                      清除緩存策略

 t

 

  1. 驗證咱們的緩存服務是否成功啓動

[root@Goun conf]# ps -ef | grep nginx

root       9390      1  0 20:52 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

www        9392   9390  0 20:52 ?        00:00:00 nginx: worker process                                         

www        9393   9390  0 20:52 ?        00:00:00 nginx: cache manager process

進程nginx:cache manager process這個進程是用來管理緩存服務和文件的。

相關文章
相關標籤/搜索