一起聊聊好玩的Openresty
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相关推荐
- capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...
是的,看我的朋友圈也能学英文#26从最近的朋友圈和微博中选了一些内容,分享给大家.1. 如何开始读英文原版书?关于读英文原版书,我给出一个简单粗暴的开始和进阶方案.启动方案:首先找一本你特别感兴趣 ...
- 应届生参加工作,什么事情越早知道越好?
链接:https://www.zhihu.com/question/407372614 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 作者:秋瑾小妞 https://www.zhihu.com ...
- 聊聊游戏:《空洞骑士》为什么好玩
之前闲聊崔轶提议增加"游戏"话题,刚好我最近沉迷了一段时间<空洞骑士>,就请崔轶过来深入聊聊<空洞骑士>为什么这么好玩. 如果你玩过<空洞骑士> ...
- python可以干嘛用-Python可以被用来做哪些神奇好玩的事情
原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...
- 聊聊《战魂铭人》的游戏设计
历经两年打磨,<元气骑士>开发商凉屋的新作<战魂铭人>,终于在本周登场了.游戏一改前作的射击风格,把拳拳到肉贯彻到底:另一方面,关于付费模式的设计也引起了很大的争议,官方在下午 ...
- Python进阶|聊聊异常处理
前言 在编写代码中,总会遇到一些bug和报错,怎么去捕获这些异常,并进行处理,以让程序更健硕了?本篇文章将带你聊聊Python的异常处理. 错误与异常 编写的程序出错,至少有两种可能,一是语法错误,二 ...
- python能做什么程序-Python可以被用来做哪些神奇好玩的事情
原标题:Python可以被用来做哪些神奇好玩的事情 如果你在周末.有WIFI的房间里不知道做什么,不如学下Python吧.有了它,你可以什么都不需要! 基础需求篇:温饱与空虚 躺着赚钱 一位匿名知乎网 ...
- 奇虎360温铭:OpenResty的未来
2019独角兽企业重金招聘Python工程师标准>>> OpenResty 是把 Nginx 和 Lua 有机融合在一起的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第 ...
- scum官方服务器维护时间,在等公测的这段时间里聊聊最近很火的scum吧
原标题:在等公测的这段时间里聊聊最近很火的scum吧 没有明日之后的日子实在是难熬,没有办法,楼主只好寻觅一下新的游戏寄托. 听说最近STEAM上有一款名叫<SCUM>的游戏非常火爆,出现 ...
最新文章
- 用友BQ商业智能设计模式——概述
- 华硕vm510l拆电池图解_图解说设备:凯斯CX80C你会买吗?
- linux部署python web项目 详细_在linux服务器下部署python工程(爬虫)
- php毛玻璃,CSS实现毛玻璃透明效果
- bcb quickrep保存为 图片_不容错过的SCI图片处理和组图方法
- Eclipse或者MyEclipse—在Eclipse或MyEclipse中的操作(2)
- 由摄像机的内参K计算视景体——glFrustum的参数推导
- IBM为北约创建云计算系统用于军情分析
- Fortran笔记,全局变量
- 东南大学计算机考研代码,东南大学代码_东南大学专业代码_2021东南大学招生代码,报考代码...
- linux ls -lrt 命令是什么意思
- 参照物中找趋势(大道至简之十七)
- UWB相关技术之测距定位方法
- 数字媒体技术 计算机类 专业大学排名,2019年全国数字媒体技术专业大学排名(20强)...
- 《针灸》笔记(倪海厦先生人纪系列针灸篇——综合)
- 6、网关 复杂分支流程
- java操作pdf制作电子签章
- ubuntu16.04 安装福昕Foxit Reader
- java 获取当前微秒时间
- 【笔记篇】最良心的计算几何学习笔记(二)