最近在用nginx lua做一個項目時,由於放回結果在100kb左右,所以需要進行gzip壓縮,節約網絡帶寬,但是在lua端又沒有很好的壓縮辦法,所以想到了曲線救國的方案。
我們只需要在nginx端再開一個server,然後反向代理lua的接口,通過設置代理gzip壓縮來達到將lua返回值進行壓縮的結果。經過試驗,最終一個80kb的返回值,通過gzip level 1(最快壓縮方式)壓縮後,僅僅7kb,我們原本峯值300mb的帶寬瞬間掉到20mb以下,效果立竿見影,cpu壓力有所上升,但是整體性能還是維持不變。
在配置過程,gzip_types 這個參數一定要設置成爲包含lua響應出去的頭,否則gzip將不生效。
#gzip站點配置
server {
listen 3002;
gzip on;
gzip_comp_level 1;
gzip_proxied any;
gzip_vary on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_types text/plain application/x-javascript text/css application/xml application/javascript application/json;
#gzip
location /gzip/hotel/filter {
proxy_pass https://127.0.0.1:3001/hotel/filter$is_args$args;
}
}