==================================================================
1、查看 zlib在centos 中是否存在?
rpm -qa | grep zlib 显示:
zlib-devel-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.x86_64 表示已安装,不用过多担心 。 ====================================================================
2、安装cmake编译器 yum install -y gcc gcc-c++ make automake
wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -zxvf cmake-2.8.10.2.tar.gz
cd cmake-2.8.10.2
./bootstrap
gmake
gmake install 检查cmake安装
cmake --version
显示
cmake version 2.8.10.2
表示安装成功
====================================================================
3、下载lua-zlib包,并解压
unzip lua-zlib-master.zip
cd /usr/local/software/lua-zlib-master cmake -DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1
make cp zlib.so /usr/local/openresty/lualib/zlib.so
==================================================================== 4、在lua脚本中调用 复制代码
location /test {
default_type text/html;
content_by_lua '
local zlib = require "zlib"
local encoding = ngx.req.get_headers()["Content-Encoding"]
-- post参数在接收前首先要执行这个
ngx.req.read_body(); if encoding == "gzip" then
local body = ngx.req.get_body_data()
if body then
local stream = zlib.inflate()
local r=stream(body);
ngx.req.set_body_data(r);
end
else
ngx.say("输入的内容未经过gzip压缩。");
ngx.exit(ngx.HTTP_OK);
end --输出参数看看
local args = ngx.req.get_post_args()
for key, val in pairs(args) do
if type(val) == "table" then
ngx.say(table.concat(val, ", "))
else
ngx.say(val)
end
end
';
}
复制代码
==================================================================== 5、用c#来模块提交gzip压缩后的数据到服务器 复制代码
private void button3_Click(object sender, EventArgs e)
{
var url = "http://192.168.1.100/test";
var body = "body=黄海是我的名字!";
var ret=HttpUtil.PostHttpByGzip(url, body);
Console.WriteLine(ret);
}
复制代码
复制代码
/// <summary>
/// 功能:发起POST请求,可选择是否使用在发起时的BODY GZIP压缩
/// 作者:黄海
/// 时间:2015-01-02
/// </summary>
/// <param name="url"></param>
/// <param name="body"></param>
/// <returns></returns>
public static string PostHttpByGzip(string url, string body)
{
var req = WebRequest.Create(url);
req.Method = "POST"; // "post"
req.Timeout = 20000;
req.ContentType = "application/x-www-form-urlencoded";
req.Headers.Add("Content-Encoding", "gzip");
var reqStream = req.GetRequestStream();
var gz = new GZipStream(reqStream, CompressionMode.Compress);
var sw = new StreamWriter(gz, Encoding.UTF8);
sw.Write(body);
sw.Close();
gz.Close();
reqStream.Close();
var myResponse = req.GetResponse();
var sr = new StreamReader(myResponse.GetResponseStream());
var ret=sr.ReadToEnd();
sr.Close();
myResponse.Close();
return ret;
}
复制代码 ==================================================================== 问题总结: Makefile是linux下面的文件,对于一个包含很多文件的工程,如果直接编译,那么我们就需要使用一些命令将所有的文件都包括进来。如果我们对其中的一些文件稍做修改,那么我们需要重新输入这些命令。Makefile文件就可以很好的解决这个问题,它将所需要的命令都包含在这个Makefile文件中,然后简单的make一下就完成了所有的步骤。

在OpenResty中使用lua-zlib的方法的更多相关文章

  1. windows下openresty中使用lua做接口转发、二次封装等

    需求:根据客户需求,可以在ngx下 通过lua做接口二次封装再次转发给用户或第三方 场景:对返回值有要求的.接口屏蔽字段.或做一些业务上的验证等 1.windows直接下载openresty 解压即可 ...

  2. 在Unity3d中解析Lua脚本的方法

    由于近期项目中提出了热更新的需求,因此本周末在Lua的陪伴下度过.对Lua与Unity3d的搭配使用,仅仅达到了一个初窥门径的程度,记录一二于此.水平有限,欢迎批评指正. 网络上关于Lua脚本和Uni ...

  3. 【openresty】向lua代码中传递参数

    前面介绍FormInputNginxModule模块时,明白了openresty如何获取post提交的数据. 然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数 ...

  4. CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据

    1.下载OpenResty和Redis OpenResty下载地址:wget http://openresty.org/download/ngx_openresty-1.4.3.6.tar.gz Re ...

  5. Lua中的元表与元方法

    [前言] 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算.在Lua中也有这个道理 ...

  6. Lua中的元表与元方法学习总结

    前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了"+"符号,就可以进行类的加法运算.在Lu ...

  7. 用vs2013编译lua源码方法(一)

    用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...

  8. Lua __index元方法

    [Lua __index元方法] 当你通过键来访问 table 的时候,如果这个键没有值,那么Lua就会寻找该table的metatable(假定有metatable)中的__index 键.如果__ ...

  9. Qt学习笔记:Qt中使用Lua

    今天想在Qt中使用Lua进行数据操作 结果发现在Qt中使用Lua的文章较少,虽然很简单,但是还是写出来提供入门,顺便记录一下 我使用的是Qt Creator 3.4.2,用的是mingw4.9.2的编 ...

  10. openresty(nginx)、lua、drizzle调研

    一.概述: 1.研究目标:nginx中使用lua脚本,及nginx直接访问mysql,redis 2.需要安装的内容: openresty,mysql,redis 3.OpenResty (也称为 n ...

随机推荐

  1. web前端工程师校园招聘要求

    小燕子对紫薇说:“这辈子也别想着进皇宫了”.可后来她们不但进了宫,还都当上了格格.你在想什么?走呗! 1.去哪了网 前端开发工程师 工作地点:北京 工作职责: 负责去哪儿网各产品线Web前端研发: 负 ...

  2. Aspect Oriented Programming using Interceptors within Castle Windsor and ABP Framework AOP

    http://www.codeproject.com/Articles/1080517/Aspect-Oriented-Programming-using-Interceptors-wit Downl ...

  3. HttpHandler过滤请求..

    记得以前写过一篇..后来找不到了..我自己也忘记怎么弄了.. 在网上找了很多的教程..写的总有瑕疵..感觉不顺畅.. 自己来一篇.. 其实很简单.. 先建立一个类  继承并实现接口 IHttpHand ...

  4. jQuery 遍历 - find() 方法

    实例 搜索所有段落中的后代 span 元素,并将其颜色设置为红色: $("p").find("span").css('color','red'); 详情:htt ...

  5. Promise编程基础

    (一) Promise基础     所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消 ...

  6. vim黏贴代码格式混乱的解决方法

    from:http://blog.csdn.net/commshare/article/details/6215088 感谢牛人的文章.解决了我在vim使用中,很头疼的问题. 在vim新建文件的时候, ...

  7. 【8-16】Android学习笔记01

    Android目录树 Activity 生命周期 创建一个 Activity 在 android 中创建一个 Activity 要编写一个继承自 android.app.Activity的 Java ...

  8. Linux中zip压缩和unzip解压缩命令详解

    文章转自:http://www.jb51.net/LINUXjishu/105916.html 1.把/home目录下面的mydata目录压缩为mydata.zipzip -r mydata.zip ...

  9. JavaScript 学习笔记 -- String.trim + format

    最近仍在IE6徘徊,低版本的浏览器没有实现JavaScript 的trim() 和 format(). . 主要是这两个使用的比较多,先整理出来: 1.trim() -- 去除字符串中开始和结尾部分, ...

  10. Node.SelectNodes

    http://www.crifan.com/csharp_under_some_node_search_specific_child_node/ https://msdn.microsoft.com/ ...