Nginx緩存的配置調優,Tengine安裝和配置。

反向代理緩存:

    nginx做爲反向代理時,能夠將來自upstream的響應緩存至本地,並在後續的客戶端請求同樣內容時直接從本地構造響應報文。

可以在http全局配置內定義緩存。

http{

proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=cone:10m max_size=1g;

}

在Server裏調用。


server {

        listen       80;

        server_name  localhost;

        location / {

        proxy_pass http://192.168.18.121;

        proxy_cache cone;

        proxy_cache_valid 202 1h;

        proxy_cache_valid 302 10m;

        proxy_cache_valid any 1m;

        }

}
inactive:非活動緩存項從緩存中剔除之前的最大緩存時長;

配置成功了,那如何驗證緩存有沒有命中?

可以把後端服務器添加到upstream裏面,引入一個upstream_cache_status變量其作用是檢查緩存狀態,用addheader添加到響應首部裏面。

upstream模塊常用指令:

ip_hash:基於客戶端IP地址完成請求的分發,它可以保證來自於同一個客戶端的請求始終被轉發至同一個upstream服務器;

keepalive:後端服務器到upstream服務器的持久連接。

least_conn:最少連接調度算法;

server:定義一個upstream服務器的地址,還可包括一系列可選參數,如:

weight:權重;

max_fails:最大失敗連接次數,失敗連接的超時時長由fail_timeout指定;

fail_timeout:等待請求的目標服務器發送響應的時長;

backup:用於fallback的目的,所有服務均故障時才啓動此服務器;

down:手動標記其不再處理任何請求;

example:

    

upstream backend {

 ip_hash;

 server www.magedu.com weight=5;

 server www2.magedu.com:8080       max_fails=3  fail_timeout=30s;

}

Fastcgi緩存配置:

定義緩存

http{

fastcgi_cache_path /tmp/nginx/fastcgi levels=1:2 keys_zone=fcgi:20m max_size=1g;

}

設定主頁和路徑

server {

        listen       80;

        server_name  localhost;

        #charset koi8-r;

        location / {

                root /var/www/html;

                index index.php;

}

}

配置緩存

location ~ \.php$ {

            root           /var/www/html;

            fastcgi_pass   192.168.18.121:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            include        fastcgi_params;

            fastcgi_cache fcgi;

            fastcgi_cache_valid 200 10m;

            fastcgi_cache_valid 301 302 2m;

            fastcgi_cache_valid any 1m;

        }

我們先把緩存給註釋掉,然後reload,用ab命令測試下速率。

wKiom1PHHYex4vEoAAK5eLeOdOo501.jpg

現在我們把緩存功能打開,然後reload再測試,看效果大大不同吧。


wKioL1PHHq-w9Ts7AAKIG6hsTW8356.jpg

配置Gzip壓縮功能,以節約帶寬。

  gzip on;

啓用和關閉gzip

  gzip_min_length  1k;

最小壓縮長度
  gzip_buffers     4 16k;

設定壓縮響應的緩衝,默認大小等同於你的內存頁,4k或8k至於多少取決於你的平臺。
  gzip_http_version 1.0;

設置最低http協議版本
  gzip_comp_level 2;

設置壓縮基本取值範圍1-9
  gzip_types       text/html text/plain application/x-javascript text/css application/xml;

設置壓縮類型
  gzip_vary on; 

http部分調優: 

client_header_buffer_size 4k;
客戶端請求頭部的緩衝區大小,這個可以根據你的系統分頁大小來設置,一般一個請求頭的大小不會超過1k,不過由於一般系統分頁都要大於1k,所以這裏設置爲分頁大小。分頁大小可以用命令getconf PAGESIZE 取得。

open_file_cache max=102400 inactive=20s;
這個將爲打開文件指定緩存,默認是沒有啓用的,max 指定緩存數量,建議和打開文件數一致,inactive 是指經過多長時間文件沒被請求後刪除緩存。

open_file_cache_valid 30s;
這個是指多長時間檢查一次緩存的有效信息。

open_file_cache_min_uses 1;
open_file_cache 指令中的inactive 參數時間內文件的最少使用次數,如果超過這個數字,文件描述符一直是在緩存中打開的,如上例,如果有一個文件在inactive 時間內一次沒被使用,它將被移除。

參考文檔:http://foreveryan.blog.51cto.com/3508502/674322

平滑升級:

先用新版本的Nginx程序把老版本的替換掉,然後給master進程發一個信號,讓主進程重啓一下。

    kill -SIGUSER2 <master_process_id>

日誌滾動:

    -s reopen: kill -SIGUSR1 <master_process_id>

    1、mv /var/log/nginx/access.log /var/log/nginx/access.bak

    2、kill -s SIGUSR1 20980

信號發送完後,應該將源日誌文件改名,或者移動到別的地方,系統會自動建立一個新日誌文件。

重讀配置文件:

    -s reload:kill -SIGHUP <master_process_id>


安裝Tengine

  • tar zxvf tengine-2.0.3.tar.gz

  • cd tengine-2.0.3

編譯之前先安裝依賴程序包:

gd-2.0.35-11.el6.i686.rpm

gd-devel-2.0.35-11.el6.i686.rpm

GeoIP-1.4.8-1.el6.i686.rpm

GeoIP-devel-1.4.8-1.el6.i686.rpm

lua-devel

pcre-devel

開始編譯安裝:

./configure \

  --prefix=/usr \

  --sbin-path=/usr/sbin/nginx \

  --conf-path=/etc/nginx/nginx.conf \

  --error-log-path=/var/log/nginx/error.log \

  --http-log-path=/var/log/nginx/access.log \

  --pid-path=/var/run/nginx/nginx.pid  \

  --lock-path=/var/lock/nginx.lock \

  --user=nginx \

  --group=nginx \

  --enable-mods-shared=all

  • make && make install


詳細用法參考官網:tengine.taobao.com


有問題歡迎與我交流QQ1183710107

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章