◆ OpenResty 的核心组成部分:
1. nginx:高性能的Web 服务器 2. LuaJIT:高效的Lua 语言解释器/编译器 3. ngx_lua(http_lua):处理HTTP 协议,让Lua 程序嵌入在Nginx 里运行 4. stream_lua:与ngx lua 类似,但处理的是TCP/UDP 协议使用这四个核心组件, OpenResty 就可以完成相当多的网络应用开发工作了。同时,它还包含了其他一些非常有用的Nginx 组件和Lua 组件,进一步增加了 开发工作的便利。
◆ Nginx 组件:
1. ngx_conv:转换不同的字符集编码 2. ngx_encrypted:使用 AES-256 算法执行简单的加密运算 3. ngx_echo:提供一系列“echo”风格的指令和变量 4. ngx_set_misc:增强的“set xxx”指令,用来操作变量; 5. ngx_headers_more:更方便地处理 HTTP 请求头和响应头的指令 6. ngx_memc:支持各种memcached 操作 7. ngx_redis2:支持各种Redis 操作 8. ngx_dizzle:支持各种MySQL 操作 9. ngx_postgres:支持各种PostgreSQL 操作◆ 常用的Lua组件:
1. lua_core:Open_Resty的核心功能库; 2. lua_cjson:处理JSON 格式的数据,速度很快(使用c语言实现) 3. lua_string:hex/rnd5/shal/sha256等字符串功能 4. lua_upload:流式读取HTTP的上行数据 5. lua_healthcheck:后端集群健康检查 6. lua_limit_traffic:定制流量控制策略 7. lua_lock:基于共享内存的非阻塞锁 8. lua_lrucache:高效的LRU缓存功能 9. lua_dns:高效、非阻塞的DNS解析功能 10. lua_websocket:高效、非阻塞的WebSocket功能 11. lua_redis:Redis 客户端,用起来比ngx_redis2更灵活 12. lua_memcached:Memcached 客户端,用起来比ngx_memc 更灵活 13. lua_mysql:MySQL客户端,用起来比ngx_dizzle 更灵活◆ 辅助工具
核心组件、Nginx 组件和Lua 组件实现了OpenResty 的主要功能, 但作为集成开发环境,辅助开发、调试和运维的工具也是必不可少的。
1. opm:类似rpm 、口pm 的管理工具,用来安装各种功能组件 2. resty-cli:以命令行的形式直接执行OpenResty/Lua 程序 3. restydoc:类似man的参考手册,非常详细◆ 组件示意图:
◆ 版本号: OpenResty 使用四位数字作为版本号,形式是:a.b.c.x ,其中前三位数字是内部Nginx的版本,作为大版本号,第四位数字是OpenResty 自己的发布版本号,也就是小版本号。
◆ 目录结构:
通常我们需要关注的是bin和lualib目录。
1. bin:存放可执行文件 2. luajit:LuaJIT 运行库 3. lualib:Lua组件 4. nginx:Nginx 核心运行平台 5. pod:参考手册(restydoc)使用的数据 6. site:包管理工具(opm)使用的数据bin目录里存放的是OpenResty可执行文件,关系到OpenResty的运行,较重要的有:
1. openresty:可执行文件,用来启动OpenResty服务(调用nginx的软链接openresty -> /home/openresty/nginx/sbin/nginx) 2. opm:组件管理工具,用来安装各种功能组件 3. resty:命令行工具,可直接执行Lua 程序 4. restydoc:参考手册lualib 目录里存放的是OpenResty自带的Lua 组件,如lua_cjson、lua_core 等