5.Nginx作為web緩存服務器


Nginx作為web緩存服務器

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

 

  1. nginx下安裝緩存服務器

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

在網上下載ngx_cache_purge插件的最新版本,然后重新編譯安裝nginx。

./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 / {

    root   html;

    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這個進程是用來管理緩存服務和文件的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM