在Nginx服務器配置文件中能夠經過配置Gzip的使用,能夠配置在http塊,server 塊或者location塊中設置,Nginx服務器能夠經過ngx_http_gzip_module模塊、ngx_http_static_module 模塊功能ngx_http_gunzip_module模塊對這些指令進行分析和處理。javascript
一:ngx_http_gzip_module模塊處理的指令:php
一、gzip:css
用於打開或者關閉gzip壓縮的功能,用法以下:前端
gzip on | off ; #默認爲off
二、gzip_buffers:java
用於指定gzip功能壓縮文件時使用的緩存空間的大小,語法結構爲:nginx
gzip_buffers numner | size ; number #指定Nginx服務器須要向服務器申請的緩存空間的個數 size #指定每一個緩存空間的大小,從Nginx 0.7.8開始,默認number * siez的的值爲128,其中size取系統中內存頁一頁的大小,爲4k或者8k等
gzip_buffers 32 4k | 12 8k;
三、gzip_comp_level 正則表達式
指定gzip壓縮級別,級別爲1-9,默認爲1,級別越高壓縮率越高即壓縮後的文件越小,可是越佔用CPU,壓縮率越小壓縮後的文件越大,可是節約CPU。數據庫
gzip_comp_level 4; #推薦先設置爲中間的值,好比4或者5
四、gzip_disbale後端
針對不一樣客戶端發起的請求進行有選擇的打開或關閉gzip命令,後面跟瀏覽器的名稱,用法以下:xcode
gzip_disable MSIE[1-6]\. #使用正則表達式能夠匹配UC字符串中MSIE 1-6 的瀏覽器,這三個瀏覽器在發起請求後Nginx將不進行數據包的壓縮。
五、gzip_http_verson
早期的一些瀏覽器或者http客戶端可能不支持gzip壓縮,所以有客戶有時候會看到亂碼,那是應爲客戶端沒法進行解壓,所以能夠根據不一樣的http協議版本進行選擇性的打開或關閉gzip功能,用法以下:
gzip_http_version 1.0 | 1.1; #對使用htto協議1.0和1.1的請求進行壓縮
六、gzip_min_length
設置最少壓縮的數據包大小,小於此值的數據包將不被壓縮,由於大量的小的數據壓縮後沒有明顯的效果還佔用了CPU的資源,所以能夠設置最少多大的數據才進行壓縮,用法以下:
gzip_min_length 1024; #默認爲20,建議設置位1KB,若是設置爲0則表示壓縮所有數據包
七、gzip_proxine
在Nginx 服務器做爲反向代理的時候有效,用於設置nginx 服務器是否對後端返回的結果進行gzip壓縮,用法以下:
gzip_proxied off | any; #off爲關閉,any爲壓縮全部後端服務器返回的數據。
八、gzip_types
設置Nginx服務器能夠根據響應頁面的類型進行選擇性的打開或關閉gzip功能,用法以下:
gzip_types text/plain application/x-javascript text/css application/xml; #通常狀況下如此設置
九、gzip_vary
用於設置是否在使用gzip功能時發送帶有"vary:Accept-Encoding" 頭域的響應頭部,該頭域的主要功能時要告訴客戶端數據已經在服務器進行了壓縮,默認設置爲off,用法以下:
gzip_vary on| off; #默認爲off
還可使用Nginx 配置的add_header指令強制在Nginx服務器的響應頭部添加「Vary:Accept-Encoding」也能夠實現相同的效果。
二:ngx_http_gzip_static_module 模塊:
該模塊輔助用於搜索和發送通過gzip功能壓縮的數據,這些數據以*.gz做爲後綴名存儲在服務器上,若是客戶端請求的數據以前被壓縮過,而且客戶端的瀏覽器支持壓縮,將直接範湖壓縮後的數據,該模塊使用的是靜態編碼,在http響應頭部包含content-length頭域來指明報文的長度,用於服務器能夠肯定響應數據的長度的狀況,而ngx_http_gzip_module使用chunked編碼動態壓縮,主要用於服務器沒法肯定響應數據長度的狀況,好比較大文件的下載等情形,此時就要實時生成數據的長度,用法與ngx_http_gzip_module同樣,以下:
一、gzip_static
gzip_static off | on | always; #on爲開啓並檢查客戶端瀏覽器是否中吃gzip壓縮功能,off爲關閉,always一直髮送gzip壓縮文件,而不檢查瀏覽器是否支持gzip壓縮
注:這是一個可選模塊,若是要使用,必須在編譯nginx時添加--with-http_gzip_static_module編譯,與該模塊有關的 指令與ngx_http_gzip_module的模塊使用方法是一致的,本模塊有gzip_static、gzip_http_version、gzip_proxied、gzip_disable和gzip_vary等。
三:ngx_http_gunzip_module 模塊處理的兩個指令
一、gunzip
設置Nginx服務器對不支持gzip的客戶端返回解壓後的數據,若是客戶的瀏覽器支持壓縮還仍然返回壓縮的後的數據,及能夠同時響應支持gzip的瀏覽器進程壓縮,有能夠響應不支持gzip的瀏覽器。
gunzip on|off ;#on爲打開off爲關閉
二、gunzip_buffers #用於設置nginx服務器解壓gzip文件時候使用的緩存空間大小的,用法以下:
gunzip_buffers number size; #number爲nginx服務器向系統向系統申請緩存空間的個數,size爲每一個空間的大小,單位爲k,默認狀況下number * size的大小爲128k,其中size 的值取系統內存頁一頁的大小爲4KB或者8KB便可,用法以下: gunzip_buffers 32 4k | 16 8k; #與ngx_http_gzip_module模塊下的使用方法一致。
注:這是一個可選模塊,若是要使用須要在nginx 編譯安裝的時候使用--with-http_gunzip_module 指令進行編譯
四:緩存功能:
1.memcached緩存數據庫經常使用數據。
2.xcache緩存php編譯的結果,能夠在多個進程之間共享xcode結果。
3.nginx的緩存是緩存opcode處理後的結果,避免客戶端請求同一個頁面而致使程序每次都處理一下,即再訪問同一個頁面,直接使用處理後的緩存便可直接返回。
五:正向代理和反向代理:
1.正向代理:工做在用戶前端,用戶請求的全部內容都通過代理服務器。
2.反向代理:工做在服務器前端,只代理請求次服務器的客戶端請求,被其代理的服務器叫作"代理服務器"或者"上游服務器"。