高性能的 Web 服务器 Nginx,它资源占用少,处理能力高,是搭建网站的首选。
虽然 Nginx 成为了 Web 服务器领域无可争议的“王者”,但它也并不是没有缺点的,毕竟它已经 15 岁了。
“一个人很难超越时代,而时代却可以轻易超越所有人”,Nginx 当初设计时针对的应用场景已经发生了变化,它的一些缺点也就暴露出来了。
Nginx 的服务管理思路延续了当时的流行做法,使用磁盘上的静态配置文件,所以每次修改后必须重启才能生效。这在业务频繁变动的时候是非常致命的(例如流行的微服务架构),特别是对于拥有成千上万台服务器的网站来说,仅仅增加或者删除一行配置就要分发、重启所有的机器,对运维是一个非常大的挑战,要耗费很多的时间和精力,成本很高,很不灵活,难以“随需应变”。
那么,有没有这样的一个 Web 服务器,它有 Nginx 的优点却没有 Nginx 的缺点,既轻量级、高性能,又灵活、可动态配置呢?
这就是我今天要说的 OpenResty,它是一个“更好更灵活的 Nginx”。
OpenResty 诞生于 2009 年。它的创造者是当时就职于某宝的“神级”程序员章亦春,网名叫“agentzh”。
OpenResty 并不是一个全新的 Web 服务器,而是基于 Nginx,它利用了 Nginx 模块化、可扩展的特性,开发了一系列的增强模块,并把它们打包整合,形成了一个 “一站式”的 Web 开发平台。
虽然 OpenResty 的核心是 Nginx,但它又超越了 Nginx,关键就在于其中的 ngx_lua 模块,把小巧灵活的 Lua 语言嵌入了 Nginx,可以用脚本的方式操作 Nginx 内部的进程、多路复用、阶段式处理等各种构件。
脚本语言的好处你一定知道,它不需要编译,随写随执行,这就免去了 C 语言编写模块漫长的开发周期。而且 OpenResty 还把 Lua 自身的协程与 Nginx 的事件机制完美结合在一起,优雅地实现了许多其他语言所没有的“同步非阻塞”编程范式,能够轻松开发出高性能的 Web 应用。
虽然Nginx仍然是核心,但看得出openResty有淡化自身“Nginx Bundle"色彩的趋势,力图成为一个更伟大的存在。
OpenResty自带完善的帮助文档,开发社区也很活跃,但相关的学习资料一一特别是中文资料较少。
这里给大家分享一份大佬多年使用OpenResty的经验,系统地阐述了OpenResty相关的各方面知识和要点,帮助我们快速掌握这个高效易用的Web开发平台,进而实现HTTP/HTTPS/TCP/UDP等多种网络应用。
第1章总论
第2章Hginx平台
第3章Lua语言
第4章LuaJT环境
第5章开发概述
第6章基础功能
第7章HttP服务
第8章访问后端
第9章反向代理
第10章高级功能
第11章HTTPS服务
第12章HTTr2服务
第13章Websocket服务
第14章TCP/UDP服务