首頁  >  文章  >  後端開發  >  nginx cache 配置

nginx cache 配置

WBOY
WBOY原創
2016-07-30 13:31:46934瀏覽

nginx cache 設定

Nginx從0.7.48版本開始,支援了類似Squid的快取功能。這個快取是把URL及相關組合當作Key,用md5編碼哈希後保存在硬碟上,所以它 可以支援任意URL鏈接,同時也支援404/301/302這樣的非200狀態碼。雖然目前官方的Nginx Web快取服務只能為指定URL或狀態碼設定過期時間,不支援類似Squid的PURGE指令,手動清除指定快取頁面,但是,透過一個第三方的Nginx 模組,可以清除指定URL的緩存。 IT網,http://www.it.net.cn

Nginx的Web快取服務主要由proxy_cache相關指令集和fastcgi_cache 相關指令集構成,前者用於反向代理時,對後端內容來源伺服器進行緩存,後者主要用於對FastCGI的動態程式進行緩存。兩者的功能基本上一樣。

最新的Nginx 0.8.32版本,proxy_cache和fastcgi_cache已經比較完善,加上第三方的ngx_cache_purge模組(用來清除指定 URL的快取),已經可以完全取代Squid。我們已經在生產環境使用了 Nginx 的 proxy_cache 快取功能超過兩個月,十分穩定,速度不遜於 Squid。

在功能上,Nginx已經具備Squid所擁有的Web快取加速功能、清除 指定URL快取的功能。而在效能上,Nginx對多核心CPU的利用,勝過Squid不少。另外,在反向代理、負載平衡、健康檢查、後端伺服器故障轉移、 Rewrite重寫、易用性上,Nginx也比Squid強大得多。這使得一台Nginx可以同時作為「負載平衡伺服器」與「Web快取伺服器」來使用。

1、  Nginx 負載平衡與快取伺服器在Linux 下的編譯安裝:
  Linux學習,http:// linux.it.net.c

ulimit -SHn 655355ft .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 &insta&m cd ../
wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz
tar zxvf ngx_cache_purge-1.0.tar.gz


wget http://nginx.org/download/nginx-0. 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 -www --group=www --add-module=../ngx_cache_purge-1.0 - -prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make && make install
cd ../ 
IT網,http://www.it.net.cn

/usr/local/nginx/conf/nginx.conf 設定檔內容如下:

  
IT網,http://www.it.net.cn

user  www www;

worker_processes 8; usr/local/nginx/logs/nginx_error.log  crit; 

IT網,http://www.it.net.cn

pid        /usr/local/nginx value for maximum file descriptors that can be opened by this process.worker_rlimit_nofile 65535;

events

{

  use epoll; include       mime.types;
  default_type  application/octet-stream ; 

Linux學習,http:// linux.it.net.cn



  #charset  utf-8;
      
  server_names_hash_bucket_sizeclis8; ent_header_buffers 4 32k;

  client_max_body_size 300m;

      
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 60; IT網,http://www.it.net.cn


  tcp_nodelay on;

  client_body_buffer_sizedxy 51  proxy_read_timeout       60;
  proxy_send_timeout       5;
  proxy_buffer_size      5;
  proxy_buffer_size    proxy_buffers            4 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;網。

  gzip_min_length  1k;

  gzip_buffers     4 16k;  gzip_http_version 1.1;  gzip_comp_level 2;

  gzip_types       text/plain application/x-javascript text/css application/xml;

  gzip_vary on;

  #註:proxy_temp_path與proxy_cache_path指定的路徑必須在相同分割區
  proxy_temp_path   /data0/proxy_temp_dir;
  #設定Web快取區名稱為cache_one,記憶體快取空間大小為200MB,空間大小為30GB。
  proxy_cache_path  /data0/proxy_cache_dir  levels=1:2   keys_z inactive=1d max_size=30g;
  
  upstream backend_server {
    server   192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;
    server   192.168.8.44:80 weight= 1 max_fails=2 fail_timeout=30s;
    server   192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30so
  }

.  80;

    server_name  www.it.net.cn 192.168.8.42;
index index.html index.htm;
    root  /data0/htdocs/www; 

    location/
    {

   另一台伺服器,實現故障轉移。

         proxy_next_upstream http_502 http_504 error timeout invalid_header;
         proxy_cache cache_one         proxy_cache cache_one               proxy_cache_valid  200 304 12h;
         #以網域名稱、URI、參數組合成Web快取的Key值,Nginx依據Key值哈希,儲存快取內容到二級快取目錄內
         proxy_cache_key $host$uri$is_args$args;
         proxy_set_header Host          $remote_addr;
         proxy_pass http://backend_server;
expires      1d;
    }
    
    # 用於清除緩存,假設一個URL為http://192.168.8.42/test.,透過存取http://192.1680.快取.

    location ~ /purge(/.*)
    {
     #設定只允許指定的IP或IP段才可清除URL快取。
     allow            allow            127.0.0.1;
     allow               all; 
     proxy_cache_purge    cache_one   $host$1$is_args$args;
    }  
    # 副檔名以.php、.jsp、.cgi結尾的動態應用程式不快取。
    location ~ .*.(php|jsp|cgi)?$
    {
         proxy_set_header Host  $host         proxy_pass http://backend_server;
    }
    access_log  off;
  }

Linux學習,http:// linux.it.net.cn




以上就介紹了nginx cache 配置,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn