==================================================================
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. SVN合并操作实践

    大家都知道,SVN是很多公司管理代码的版本控制工具,当分支越来越多,版本迭代越来越频繁的时候,经常会出现代码冲突的头疼事儿,这里讲一下鲨鱼遇到过关于代码版本控制的一些事,最后做个小例子,看图描述. 为 ...

  2. vi/vim使用小结

    1.三种模式: •Command mode 命令模式,用于输入命令,简单更改. •Insert mode 插入模式,用于插入文本. •Last line mode 末行模式,用于输入命令.视化操作.查 ...

  3. Struts2 中Parameters是如何获取值的

    刚刚学习struts2的知识,在练习struts2的默认语言OGNL过程中,对于<p>parameters:<s:property value="#parameters.u ...

  4. Linux负载均衡软件LVS简介

    Linux负载均衡软件LVS LVS集群的体系结构以及特点 1. LVS简介        LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起 ...

  5. Python之路【第九篇】堡垒机基础&数据库操作

    复习paramiko模块 Python的paramiko模块,是基于SSH用于连接远程服务器并执行相关操作. SSHClient #!/usr/bin/env python #-*- coding:u ...

  6. Yii2-Redis使用小记 - Cache(转)

    前些天简单学习了下 Redis,现在准备在项目上使用它了.我们目前用的是 Yii2 框架,在官网搜索了下 Redis,就发现了yii2-redis这扩展. 安装后使用超简单,打开 common/con ...

  7. 新浪微博客户端(49)-删除输入的Emotion表情

    DJComposePageView.m - (void)deleteInputEmotion { // 发通知 [[NSNotificationCenter defaultCenter] postNo ...

  8. 用友android

    获取token要改 value要改 不用通配符 直接双引号

  9. AngularJS API之equal比较对象

    使用情况 1 首先,所有满足 a === 3 这种的对象,在angular.equals(a,b)中都会返回真 2 所有对象的类型,以及属性值都相同的,也会返回真 3 NaN和NaN也会返回真(在ja ...

  10. springMVC 缓存(入门 spring+mybaties+redis一)

    使用redis之前需要咋电脑上安装redis: 使用spring+mybaties+redis的本质是扩展类   org.apache.ibatis.cache.Cache:在我们自己扩展的Cache ...