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

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

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

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
        }html

}前端

2、緩存配置java

一、配置http{}nginx

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天)指定的時間內未被訪問,就會被從緩存中移除

二、配置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)緩存配置生效後:

3、壓縮配置

在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

相關文章
相關標籤/搜索