nginx tcp lua module

将 Lua 的功能嵌入 Nginx 服务器
授权协议 GPL
开发语言 C/C++ Lua
所属分类 服务器软件、 Nginx扩展模块
软件类型 开源软件
地区 国产
投 递 者 葛胜泫
操作系统 Linux
开源组织
适用人群 未知
 软件概览

ngx_tcp_lua_module-将Lua的功能嵌入Nginx服务器。在tcp流模式下工作。

基于nginx1.4.1版本, 本着精简,高效,模块化等原则,吸收nginx-http-lua模块(https://github.com/openresty/lua-nginx-module), tcp_lua模块(https://github.com/bigplum/nginx-tcp-lua-module) 等第三方nginx模块的设计框架和精华代码,忠于nginx编程思想和代码风格,化繁去简, 实现基于tcp之上的自定义协议服务器,支持类似nginx扩展模块的开发,支持类似ngx-http-lua的快速的业务逻辑开发模式,支持基于异步socket反向代理,并实现与上游http,mysql服务的请求交互,支持http简单负载均衡.
1. 日志: 新增 error_log, access_log 的网络日志功能。
2. tcp 模块。 
    tcp框架下自定义协议开发,模块示例 demo 
3. 基于tcp框架的tcp_lua模块。
    在基本代码框架上做调整:
    3.1 将整个ngx_tcp_lua作为一个独立模块,而非整个tcp模块围绕tcp_lua模块开发。
    3.2 鉴于一个连接上仅有一个客户端,将封装的socket上下游通用类分离出下游函数。socket类仅与上游交互。简化逻辑。
    3.3 为提高效率,lua处理请求分为 连接会话和协议请求。充分利用keepalive。 具体参照文档和实现。
    3.4 去掉接收数据时的模式匹配功能函数receiveutil,简化接收发送缓存的实现,使得对内存的控制更精确,内存资源管理更简单。
    3.5 扩充init_by_lua功能和共享内存操作功能, ngx.sleep,ngx.exit等函数。
    3.6 优化代码和修复已知bug.
    3.7 支持使用mysql,http协议与上游交互,并支持简单的负载均衡和重试机制
    3.8 实现ngx.nlog代替ngx.log打印网络日志
4. 详细说明见 src/tcp/doc/ 相关文档

 

  • 源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一、 目标 使用Redis做分布式缓存;使用lua API来访问redis缓存;使用nginx向客户端提供服务,ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求。url请求nginx服务器,然后lua查询redis,返回json数据。 二、准备工作 系统环

  • 很早就想写下关于nginx的一些东西了,但因为个人原因,一直未附加行动,借此闰月末日之际(丙申年 庚寅月 辛巳日),写下此篇 开篇词 车遥遥篇    南宋·范成大 车遥遥,马憧憧。 君游东山东复东,安得奋飞逐西风。 愿我如星君如月,夜夜流光相皎洁。 月暂晦,星常明。 留明待月复,三五共盈盈。 关于nginx的相关知识此处不再赘述,直奔主题 环境 CentOS 6.5    nginx版本 1.6.

 相关资料
  • 我有一个简单的java项目,叫做服务器。此外,我有一个osgi api项目,它定义了一个接口BlockProvider。接下来,我有一个osgi声明性服务项目,其中有一个实现BlockProvider的服务。 在我的java项目服务器中,我有一个嵌入式osgi框架(在我的例子中是felix)。 我创建了一个bundleactivator,它安装gogo osgi捆绑包、scr捆绑包、我的api项目

  • 我在Karaf 4.1.4下使用2.2.33 OrientDb。带有捆绑激活器的Karaf功能完成了: 但通过功能安装,我得到了一个依赖项错误,如下所示。 由于组织原因,无法安装面向功能的数据库服务器。奥斯基。服务分解器。ResolutionException:无法解析根:缺少需求[root]osgi。身份奥斯基。identity=orientdb服务器;类型=卡拉夫。特色version=“[2.

  • 本文向大家介绍Lua 匿名功能,包括了Lua 匿名功能的使用技巧和注意事项,需要的朋友参考一下 示例 创建匿名函数 匿名函数就像常规的Lua函数一样,只是它们没有名称。 如您所见,该函数未分配任何名称,例如print或add。要创建匿名函数,您要做的就是省略名称。这些函数也可以接受参数。 了解语法糖 重要的是要了解以下代码 实际上只是 但是,上述函数不是匿名的,因为该函数直接分配给变量! 函数是一

  • 我在数据库中存储了一个字符串,希望从应用程序中的不同位置访问该字符串。我发现最好的解决方案是创建一个函数,从数据库中获取该字符串并将其注册为服务。 功能: service.yml 其他控制器中的输出: 不幸的是,我不断地 严重-未捕获的PHP异常Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:“您请求

  • 配置服务器最好作为独立应用程序运行,但如果需要,可以将其嵌入到另一个应用程序中。只需使用@EnableConfigServer注释。在这种情况下可以使用的可选属性是spring.cloud.config.server.bootstrap,它是一个标志,表示服务器应该从其自己的远程存储库配置自身。该标志默认关闭,因为它可能会延迟启动,但是当嵌入在另一个应用程序中时,以与其他应用程序相同的方式初始化是

  • 来自服务器的错误(InternalError):创建“stdin”时出错:发生内部错误:调用webhook“validate.nginx.ingress.kubernetes.io”失败:Post https://ingress-nginx-controller-crission.ingress-nginx.svc:443/extensions/v1beta1/ingress?timeout=30

  • 每个Spring Boot Web应用程序都包含一个嵌入式Web服务器。 此功能会导致许多操作方法问题,包括如何更改嵌入式服务器以及如何配置嵌入式服务器。 本节回答了这些问题。 9.3.1 使用其他Web服务器 许多Spring Boot启动器都包含默认的嵌入式容器。 对于servlet堆栈应用程序,spring-boot-starter-web包括tomcat,包括spring-boot-sta

  • This module embeds the Lua interpreter or LuaJIT into the nginx core and integrates the powerful Lua threads (aka Lua coroutines) into the nginx event model by means of nginx subrequests. Unlike Apach