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命令測試下速率。
現在我們把緩存功能打開,然后reload再測試,看效果大大不同吧。
配置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
總結
以上是生活随笔為你收集整理的Nginx缓存的配置调优,Tengine安装和配置。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 18个不常见的C#关键字,您使用过几个?
- 下一篇: Nginx —— 检查配置文件ngi