nginx解压gzip格式的请求

参考: http://www.pataliebre.net/howto-make-nginx-decompress-a-gzipped-request.html#.Vm-GOmR95GH


原料:

nginx 安装文件: nginx.org 我是用的是 1.8.0 ,注意lua-nginx-module与nginx兼容性

lua-nginx模块安装文件:https://github.com/openresty/lua-nginx-module

lua-zlib模块安装文件: https://github.com/brimworks/lua-zlib

nginx-devel-kit安装文件:https://github.com/simpl/ngx_devel_kit/tags

lua 解析gz格式的脚本文件: deflat_zip_request.lua见后边

Prerequest:

linux 操作系统:  我是用的cent os

linux 安装 lua ,安装pcre-deve,zlib l: yum install lua pcre-devel zlib


步骤:

  1. 安装 nginx lua-nginx nginx-devel-kit
    1. cd nginx-1.8.0

      ./configure  --prefix=/usr/local/nginx-1.8.0  --add-module=lua-nginx-module-0.9.19路径 --add-module=ngx_devel_kit-0.2.19路径

      make 

      make insall


  2. 安装lua-zlib
    1. cd lua-zlib

      make linux

      复制生成的 zlib.so 至/usr/local/lib目录下供nginx使用


  3. 配置nginx脚本:
    1. location /unzip/ {
      
          proxy_pass http://backend;
          proxy_set_header        REMOTE_ADDR       $remote_addr;
          proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      
          proxy_next_upstream http_500 http_502  http_504;
          limit_req   zone=java  burst=5 nodelay;
          #proxy_next_upstream_tries 1;   set $max_chunk_size 10240; # Chunks of 10 KB  set $max_body_size 524288; # Max inflated body size of 512 KB   rewrite_by_lua_file /usr/local/nginx/scripts/deflat_zip_request.lua;
      }

    2. 重启nginx
  4. 测试:
    1. 在本地terminal中使用curl测试:
      1. curl -v -s     --trace-ascii http_post_trace.log     --data-binary @gzip_request_test.gz     -H "Content-Type: text/html"     -H "Content-Encoding: gzip"     -o response.txt     -X POST     http://192.168.1.1/unzip/







你可能感兴趣的:(nginx,request,GZip,lua)