Openresty是国人发起的一个开源项目,大概看了一下,也体验了一下,在技术实现上,角度挺有意思的。Openresty是基于Nginx的web服务器,有意思的是Openresty的思路是把web应用服务集成到Nginx里面。

Openresty是国人发起的一个开源项目,大概看了一下,也体验了一下,在技术实现上,角度挺有意思的。Openresty是基于Nginx的web服务器,有意思的是Openresty的思路是把web应用服务集成到Nginx里面。大家都知道Nginx是通常配合Node.js、Go、PHP等后端技术一起使用,通过进程间通信或者socket完成一个完整的服务。

那么Openresty是怎么做的呢?Openresty通过把自己写的Nginx第三方模块和Lua语言整合到Nginx里,然后打出一个新包Openresty。类比Node.js,V8支持js语言,但是没有网络、文件等功能,Node.js基于V8拓展里这些功能,然后把V8和其他代码打包成Node.js成为一个新品。Nginx没有执行脚本的能力,Openresty基于Nginx,通过第三方模块把lua语言的能力整合进去,实现在Nginx里执行lua脚本代码。

通过Openresty,我们直接编写lua代码完成整个业务代码的逻辑,重点是在Openresty里我们具备了语言层面的能力,可以做的事件就不限于Nginx本身提供的。Openresty源码里包括了很多代码,其中很多第三方Nginx和lua模块,不过我们只关注原理。

LuaJIT是lua语言的JIT编译器,据说速度惊人,Nginx就是Nginx内核,ngx_lua就是通过Nginx第三方模块的方式把lua整合到Nginx里。下面我们看看怎么使用。可以到官网下载源码。编译安装三步走。

./configure
make
sudo make install

然后执行

mkdir openresty-test openresty-test/logs/ openresty-test/conf/

然后在conf新建一个配置文件nginx.conf。写入

worker_processes  2;
events { worker_connections 1024;} http { server { listen 8888; location / { default_type text/html; content_by_lua_block { ngx.say("Hi") } } }}

然后执行

nginx -p openresty-test

这时候我们的Nginx就启动了,我们访问8888端口就会看到Hi的输出。我们看到Nginx配置里有一个content_by_lua_block指令,这个不是Nginx的内置指令,而是Openresty拓展的指令。当匹配到location里的路由时,Nginx的第三方模块就会调用lua的引擎执行content_by_lua_block里的lua脚本。有了lua的能力,Openresty可以做的事情比Nginx多了很多,再配合Nginx和luajit的高性能。就实现了一个灵活而又高性能的web服务器。比如我们可以使用Openresty做网关,实现转路由,鉴权、监控等功能。Openresty选用了lua语言,lua本身足够简单,而且很好地和底层语言的现成模块实现调用,减轻了开发成本。总的来说,我觉得Openresty是一个很酷又很有意思的项目。

一起聊聊好玩的Openresty相关推荐

  1. capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...

      是的,看我的朋友圈也能学英文#26从最近的朋友圈和微博中选了一些内容,分享给大家.1. 如何开始读英文原版书?关于读英文原版书,我给出一个简单粗暴的开始和进阶方案.启动方案:首先找一本你特别感兴趣 ...

  2. 应届生参加工作,什么事情越早知道越好?

    链接:https://www.zhihu.com/question/407372614 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 作者:秋瑾小妞 https://www.zhihu.com ...

  3. 聊聊游戏:《空洞骑士》为什么好玩

    之前闲聊崔轶提议增加"游戏"话题,刚好我最近沉迷了一段时间<空洞骑士>,就请崔轶过来深入聊聊<空洞骑士>为什么这么好玩. 如果你玩过<空洞骑士> ...

  4. python可以干嘛用-Python可以被用来做哪些神奇好玩的事情

    原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...

  5. 聊聊《战魂铭人》的游戏设计

    历经两年打磨,<元气骑士>开发商凉屋的新作<战魂铭人>,终于在本周登场了.游戏一改前作的射击风格,把拳拳到肉贯彻到底:另一方面,关于付费模式的设计也引起了很大的争议,官方在下午 ...

  6. Python进阶|聊聊异常处理

    前言 在编写代码中,总会遇到一些bug和报错,怎么去捕获这些异常,并进行处理,以让程序更健硕了?本篇文章将带你聊聊Python的异常处理. 错误与异常 编写的程序出错,至少有两种可能,一是语法错误,二 ...

  7. python能做什么程序-Python可以被用来做哪些神奇好玩的事情

    原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...

  8. 奇虎360温铭:OpenResty的未来

    2019独角兽企业重金招聘Python工程师标准>>> OpenResty 是把 Nginx 和 Lua 有机融合在一起的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第 ...

  9. scum官方服务器维护时间,在等公测的这段时间里聊聊最近很火的scum吧

    原标题:在等公测的这段时间里聊聊最近很火的scum吧 没有明日之后的日子实在是难熬,没有办法,楼主只好寻觅一下新的游戏寄托. 听说最近STEAM上有一款名叫<SCUM>的游戏非常火爆,出现 ...

最新文章

  1. 用友BQ商业智能设计模式——概述
  2. 华硕vm510l拆电池图解_图解说设备:凯斯CX80C你会买吗?
  3. linux部署python web项目 详细_在linux服务器下部署python工程(爬虫)
  4. php毛玻璃,CSS实现毛玻璃透明效果
  5. bcb quickrep保存为 图片_不容错过的SCI图片处理和组图方法
  6. Eclipse或者MyEclipse—在Eclipse或MyEclipse中的操作(2)
  7. 由摄像机的内参K计算视景体——glFrustum的参数推导
  8. IBM为北约创建云计算系统用于军情分析
  9. Fortran笔记,全局变量
  10. 东南大学计算机考研代码,东南大学代码_东南大学专业代码_2021东南大学招生代码,报考代码...
  11. linux ls -lrt 命令是什么意思
  12. 参照物中找趋势(大道至简之十七)
  13. UWB相关技术之测距定位方法
  14. 数字媒体技术 计算机类 专业大学排名,2019年全国数字媒体技术专业大学排名(20强)...
  15. 《针灸》笔记(倪海厦先生人纪系列针灸篇——综合)
  16. 6、网关 复杂分支流程
  17. java操作pdf制作电子签章
  18. ubuntu16.04 安装福昕Foxit Reader
  19. java 获取当前微秒时间
  20. 【笔记篇】最良心的计算几何学习笔记(二)

热门文章

  1. 工欲善其事,必先利其器。如何玩转 VS Code?
  2. Zookeeper源码分析:主从角色关系流程概述
  3. 正则表达式匹配多个字符(*、+、?、{m}、{m,n})
  4. 最全 Neo4j 可视化图形数据库的工具!
  5. 22张深度学习精炼图笔记总结
  6. 自动驾驶制图中的深度学习
  7. 函数调用过程,栈帧的一点理解
  8. Cassandra读写性能测试
  9. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
  10. Unity3D是怎么提升游戏运行效率的?