反向代理緩存:
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