1. 程式人生 > >nginx反向代理、緩存及壓縮配置實戰

nginx反向代理、緩存及壓縮配置實戰

rem keys 重啟 time share 匹配 remote 內存 tex

一、反向代理配置 (原文鏈接:http://www.studyshare.cn/blog-front//blog/details/1155/0 )

準備:兩個項目分別使用端口8080,8081,只有一個備案域名,配置如下

server {
listen 80; //端口配置
server_name www.study.cn; #配置域名
#charset koi8-r;
#access_log logs/host.access.log main;
location / { #location路由,當瀏覽器訪問:http://www.study.cn或者http://www.study.cn/會被nginx匹配到該location下,匹配後將域名替換為localhost:8080
proxy_pass http://localhost:8080;
}
location /blog { #location路由,當瀏覽器訪問:http://www.study.cn/blog時,會被nginx匹配到該location,並將域名替換問localhost:8081
proxy_pass http://localhost:8081;
proxy_set_header X-Real-IP $remote_addr; #設置獲取瀏覽器訪問的網絡ip
}

}

二、緩存配置

1、配置http{}

http {
.....#略

#緩存配置
proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 96k;
proxy_temp_file_write_size 96k;
proxy_temp_path /tmp/temp_dir;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
#緩存配置

...#略
}
配置參數詳解:

proxy_connect_timeout:服務器連接的超時時間

proxy_read_timeout:連接成功後,等候後端服務器響應時間

proxy_send_timeout:後端服務器數據回傳時間

proxy_buffer_size:緩沖區的大小

proxy_buffers:每個連接設置緩沖區的數量和每塊緩沖區的大小

proxy_busy_buffers_size:開啟緩沖響應的功能以後,在沒有讀到全部響應的情況下,寫緩沖到達一定大小時,nginx一定會向客戶端發送響應,直到緩沖小於此值。proxy_temp_file_write_size:設置nginx每次寫數據到臨時文件的大小限制

proxy_temp_path:從後端服務器接收的臨時文件的存放路徑

proxy_cache_path:設置緩存的路徑和其他參數。被緩存的數據如果在inactive參數(當前為1天)指定的時間內未被訪問,就會被從緩存中移除

2、配置server{}

server{

location ~ /blog/.*\.(css|js|png|gif|jpg) {
proxy_pass http://localhost:8081;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 30d;
add_header daren "hi!cached!speed is fast.";
}

}

配置參數詳解:

location ~ /blog/.*\.(css|js|png|gif|jpg) : 使用正則表達式匹配路由,此處/blog/是當前本地前端項目配置了/blog路由才能訪問,所以靜態資源文件也就在/blog/下,如果網站前端直接打開www.study.cn就能訪問,則將/blog/去掉,直接配置:location ~ .*\.(css|js|png|gif|jpg) 即可

proxy_pass http://localhost:8081; nginx緩存裏拿不到資源,就向該地址轉發請求,並獲取資源,然後進行緩存

proxy_redirect off; 設置後端服務器“Location”響應頭和“Refresh”響應頭的替換文本
proxy_set_header Host $host; 允許重新定義或者添加發往後端服務器的請求頭
proxy_cache cache_one; 指定用於頁面緩存的共享內存,對應http層設置的keys_zone
proxy_cache_valid 200 302 24h; 為不同的響應狀態碼設置不同的緩存時間
proxy_cache_valid 301 30d;
proxy_cache_valid any 5m;
expires 30d; 緩存在瀏覽中的時間,30d:30天,30m:30分鐘

重啟nginx生效後,看看效果:

(1)緩存配置生效前:

技術分享圖片

(2)緩存配置生效後:

技術分享圖片

三、壓縮配置

在server{}中配置如下:

server{

location ~ /(.*)\.(html|js|css|jpg|jpeg|png|gif)$ {
gzip on; # 啟用gzip壓縮,默認是off,不啟用
# 對js、css、jpg、png、gif格式的文件啟用gzip壓縮功能
gzip_types application/javascript text/css image/jpeg image/png image/gif;
gzip_min_length 1024; # 所壓縮文件的最小值,小於這個的不會壓縮
gzip_buffers 4 1k; # 設置壓縮響應的緩沖塊的大小和個數,默認是內存一個頁的大小
gzip_comp_level 1; # 壓縮水平,默認1。取值範圍1-9,取值越大壓縮比率越大,但越耗cpu時間
root html/gzip;
}

}

原創文章,轉載請註明出處,更多技術文章:http://www.studyshare.cn/blog-front//blog/index

nginx反向代理、緩存及壓縮配置實戰