亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

Nginx服務器中使用gzip壓縮的相關配置解析

2024-08-30 12:27:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Nginx服務器中使用gzip壓縮的相關配置解析,包括對gzip請求處理相關的壓縮配置,需要的朋友可以參考下
 

gzip壓縮
使用 gzip 壓縮可以降低網站帶寬消耗,同時提升訪問速度。
主要在nginx服務端將頁面進行壓縮,然后在瀏覽器端進行解壓和解析,
目前大多數流行的瀏覽器都遲滯gzip格式的壓縮,所以不用擔心。
默認情況下,Nginx的gzip壓縮是關閉的,同時,Nginx默認只對text/html進行壓縮
主要配置如下:

gzip on;#開啟 gzip_http_version 1.0;#默認1.1 gzip_vary on; gzip_comp_level 6; gzip_proxied any; gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;#壓縮的文件類型  gzip_buffers 16 8k;#設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間  # Disable gzip for certain browsers. gzip_disable “MSIE [1-6].(?!.*SV1)”;#ie6不支持gzip,需要禁用掉ie6,可惡啊!!!! 

注意: 其中的gzip_http_version的設置,它的默認值是1.1,就是說對HTTP/1.1協議的請求才會進行gzip壓縮
如果我們使用了proxy_pass進行反向代理,那么nginx和后端的upstream server之間是用HTTP/1.0協議通信的。

gzip參數說明:
決定是否開啟gzip模塊
param:on|off
example:gzip on;

gzip_buffers 
設置gzip申請內存的大小,其作用是按塊大小的倍數申請內存空間
param1:int 增加的倍數
param2:int(k) 后面單位是k
example: gzip_buffers 4 8k;

gzip_comp_level
設置gzip壓縮等級,等級越底壓縮速度越快文件壓縮比越小,反之速度越慢文件壓縮比越大
param:1-9
example:gzip_com_level 1;

gzip_min_length
當返回內容大于此值時才會使用gzip進行壓縮,以K為單位,當值為0時,所有頁面都進行壓縮
param:int
example:gzip_min_length 1000;

gzip_http_version
用于識別http協議的版本,早期的瀏覽器不支持gzip壓縮,用戶會看到亂碼,所以為了支持前期版本加了此選項,目前此項基本可以忽略
param: 1.0|1.1
example:gzip_http_version 1.0

gzip_proxied
Nginx做為反向代理的時候啟用,
param:off|expired|no-cache|no-sotre|private|no_last_modified|no_etag|auth|any]
expample:gzip_proxied no-cache;
off – 關閉所有的代理結果數據壓縮
expired – 啟用壓縮,如果header中包含”Expires”頭信息
no-cache – 啟用壓縮,如果header中包含”Cache-Control:no-cache”頭信息
no-store – 啟用壓縮,如果header中包含”Cache-Control:no-store”頭信息
private – 啟用壓縮,如果header中包含”Cache-Control:private”頭信息
no_last_modified – 啟用壓縮,如果header中包含”Last_Modified”頭信息
no_etag – 啟用壓縮,如果header中包含“ETag”頭信息
auth – 啟用壓縮,如果header中包含“Authorization”頭信息
any – 無條件壓縮所有結果數據

gzip_types
設置需要壓縮的MIME類型,非設置值不進行壓縮
param:text/html|application/x-javascript|text/css|application/xml
example:gzip_types text/html;

gzip_vary on;
和http頭有關系,加個vary頭,給代理服務器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費不支持的也壓縮,所以根據客戶端的HTTP頭來判斷,是否需要壓縮

Nginx與Gzip請求
一般線程的Nginx的Gzip模塊都是和Response相關的Gzip,但如果需要的是和Request相關的Gzip呢?來看下面:
方案

第一個選擇是使用lua-zlib:

local zlib = require "zlib"local encoding = ngx.req.get_headers()["Content-Encoding"]if encoding == "gzip" then  local body = ngx.req.get_body_data()  if body then    local stream = zlib.inflate()    ngx.req.set_body_data(stream(body))  endend

第二個選擇是通過LuaJIT的FFI庫來包裝ZLIB模塊,官方教程里有一些現成的可供參考的的例子,不過例子里介紹的是Deflate,而不是Gzip,自己用FFI封裝Gzip的話又有點小復雜,好在別人已經做了相關的工作,那就是lua-files:

local ffi = require "ffi"local zlib = require "zlib"local function reader(s)  local done  return function()    if done then return end    done = true    return s  endendlocal function writer()  local t = {}  return function(data, sz)    if not data then return table.concat(t) end    t[#t + 1] = ffi.string(data, sz)  endendlocal encoding = ngx.req.get_headers()["Content-Encoding"]if encoding == "gzip" then  local body = ngx.req.get_body_data()  if body then    local write = writer()    zlib.inflate(reader(body), write, nil, "gzip")    ngx.req.set_body_data(write())  endend

如上例子代碼源自zlib_test.lua,乍看上去,代碼里的reader和writer可能會令人費解,其實你可以把它們理解成輸入輸出接口,可以修改成文件,數據庫等等形式。

別高興太早,當你運行時,很可能會遇到如下錯誤:

libzlib.so: cannot open shared object file.

實際上這是因為如下zlib.lua代碼的緣故:

local C = ffi.load 'zlib'

運行時,ffi.load會自動補全文件名,如果是Windows,則加載zlib.dll文件,如果是Linux,則加載libzlib.so,但實際上在Linux下,ZLIB擴展的名字是libz.so,而非libzlib.so。

知道的問題的原委,我們自然就知道如何修改代碼了:

local Cif ffi.os == "Windows" then  C = ffi.load "zlib"else  C = ffi.load "z"end

有時候我們不推薦直接修改第三方庫的代碼,因為這樣的話,每次第三庫更新代碼,我們都要做對應的修改,一旦忘記就會出錯,這時候可以考慮做一個軟連接別名。

測試

開篇說過,接口都是用PHP做的,不過請求里的Gzip數據是用LUA處理的,如何讓PHP使用LUA處理后的數據呢?不同的語言似乎是個難題,好在Nginx有Phases一說,PHP作為FastCGI模塊工作在content階段,LUA可以工作在access階段,這樣它們就和諧了:

location ~ /.php$ {  access_by_lua_file /path/to/lua/file;  include fastcgi.conf;  fastcgi_pass 127.0.0.1:9000;}

那么lua-zlib和lua-files兩種方案效率如何?下面是我用PHP寫的測試腳本:

<?php$url = 'http://url';$header = implode("/r/n", array(  'Content-Type: application/x-www-form-urlencoded',  'Content-Encoding: gzip',  'Connection: close',));$content = gzencode(http_build_query(array(  'foo' => str_repeat('x', 100),  'bar' => str_repeat('y', 100),)));$options = array(  'http' => array(    'protocol_version' => '1.1',    'method' => 'POST',    'header' => $header,    'content' => $content,  ),);$context = stream_context_create($options);for ($i = 0; $i < 1000; $i++) {  file_get_contents($url, false, $context);}?>

很多人寫測試腳本的時候,喜歡在開始結束部分加上時間,這樣相減就得到了代碼實際運行的時間,其實這是不必要的,利用Linux自帶的time就可以獲取運行時間:

shell> time php /path/to/php/file


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲电影天堂av| 国产精品第七影院| 91精品国产色综合| 欧美成人免费在线观看| 97视频网站入口| 中文字幕精品在线| 午夜精品久久17c| 精品网站999www| 国产精品成人av性教育| 色噜噜国产精品视频一区二区| 浅井舞香一区二区| 国产精品福利在线观看网址| 黄色成人在线免费| 色偷偷av亚洲男人的天堂| 亚洲天堂久久av| 亚洲综合大片69999| 中文字幕亚洲精品| 国产精品普通话| 国产精品久久久久7777婷婷| 最近2019中文字幕一页二页| 精品视频9999| 精品久久久精品| 成人美女免费网站视频| 国内免费精品永久在线视频| 动漫精品一区二区| 欧洲精品久久久| 国产这里只有精品| 日韩电影大片中文字幕| 成人久久久久爱| 国产一区二区日韩精品欧美精品| 国产精品久久久久7777婷婷| 亚洲色图国产精品| 欧美日韩中文在线观看| 日韩欧美有码在线| 国产精品中文字幕在线| 久久国产精品久久国产精品| 国产精品黄色影片导航在线观看| 亚洲女人天堂网| 日韩激情视频在线播放| 亚洲护士老师的毛茸茸最新章节| 欧美大荫蒂xxx| 欧美乱大交做爰xxxⅹ性3| 欧美成人免费观看| 久久精品夜夜夜夜夜久久| 久久天天躁狠狠躁夜夜av| 欧美性xxxx极品高清hd直播| 亚洲欧美综合区自拍另类| 亚洲一区亚洲二区| 日韩欧美在线免费观看| 欧美成人午夜激情在线| 欧美日韩激情小视频| 日韩成人在线播放| 91在线视频一区| 91免费看片在线| 日韩精品在线免费观看| 97国产精品人人爽人人做| 久久久久免费视频| 色老头一区二区三区在线观看| 欧美一级视频免费在线观看| 国产精品日韩精品| 国产va免费精品高清在线观看| 夜色77av精品影院| 亚洲欧美日韩第一区| 亚洲级视频在线观看免费1级| 91成人免费观看网站| 亚洲精品国产精品久久清纯直播| 久久久在线观看| 日韩中文字幕免费看| 在线观看不卡av| 亚洲大胆人体在线| 海角国产乱辈乱精品视频| 在线观看亚洲区| 国产成人精品一区| 国产成人在线亚洲欧美| 欧美在线视频网| 日韩av免费看网站| 最好看的2019的中文字幕视频| 欧美成人黄色小视频| 日韩电影免费在线观看中文字幕| 色综合久久久久久中文网| 午夜免费在线观看精品视频| 国产这里只有精品| 亚洲国产精品人久久电影| 国产精品爽黄69天堂a| 亚洲已满18点击进入在线看片| 久久久中精品2020中文| 亚洲字幕一区二区| 国产精品美乳一区二区免费| 视频直播国产精品| 久久色在线播放| 国产精品羞羞答答| 亚洲aⅴ日韩av电影在线观看| 欧美日韩激情视频8区| 亚洲а∨天堂久久精品9966| 亚洲一区999| 久久6免费高清热精品| 亚洲欧美一区二区精品久久久| 综合欧美国产视频二区| wwwwwwww亚洲| 精品国产鲁一鲁一区二区张丽| 国产欧美一区二区白浆黑人| 亚洲91精品在线观看| 日韩精品欧美激情| 精品网站999www| 亚洲精品不卡在线| 亚洲午夜色婷婷在线| 日产精品99久久久久久| 国产亚洲欧美日韩精品| 国产丝袜一区二区三区| 欧美人成在线视频| 亚洲午夜精品久久久久久久久久久久| 久久中文字幕国产| 久久不射电影网| 国产亚洲欧美日韩一区二区| 中文字幕av一区| 久久久久久国产精品三级玉女聊斋| 亚洲欧美国产精品久久久久久久| 国产欧美婷婷中文| 欧美一级电影免费在线观看| 久久中文字幕国产| 成人午夜一级二级三级| 欧美老女人性视频| 国产噜噜噜噜久久久久久久久| 国产精品第一区| 色黄久久久久久| 亚洲综合中文字幕在线观看| 午夜精品一区二区三区在线视频| 欧美日韩在线免费观看| 26uuu日韩精品一区二区| 福利微拍一区二区| 亚洲理论在线a中文字幕| 欧美午夜片欧美片在线观看| 日韩欧美中文第一页| 国产精品igao视频| 精品国内产的精品视频在线观看| 91久久嫩草影院一区二区| 欧美性猛交xxx| 欧美日韩国产黄| 久久成人精品一区二区三区| 26uuu另类亚洲欧美日本老年| 91wwwcom在线观看| 国产亚洲人成a一在线v站| 色偷偷88888欧美精品久久久| 日本a级片电影一区二区| 97精品伊人久久久大香线蕉| 国产精品偷伦免费视频观看的| 青青草国产精品一区二区| 欧美日韩电影在线观看| 色琪琪综合男人的天堂aⅴ视频| www.亚洲男人天堂| 尤物yw午夜国产精品视频明星| 久久精品一区中文字幕| 亚洲最大成人免费视频| 久久精品国产v日韩v亚洲| 亚洲男人7777| 91人成网站www| 国产精品第一页在线| 欧美大片网站在线观看| 免费99精品国产自在在线| 最新69国产成人精品视频免费| 精品亚洲一区二区三区| 国产欧美日韩中文字幕在线| 欧美中文在线观看国产| 久久精品久久久久久国产 免费|