OpenResty 最佳实践 PDF 文档
在 2012 年的时候,加入到奇虎 360 公司,为新的产品做技术选型。由于之前一直混迹在 Python 圈子里面,也接触过 Nginx C 模块的高性能开发,一直想找到一个兼备 Python 快速开发和 Nginx C 模块高性能的产品。看到 OpenResty 后,有发现新大陆的感觉。
于是在新产品里面力推 OpenResty,团队里面几乎没人支持,经过几轮性能测试,虽然轻松击败所有的其他方案,但是其他开发人员并不愿意参与到基于 OpenResty 这个陌生框架的开发中来。于是我开始了一个人的 OpenResty 之旅,刚开始经历了各种技术挑战,庆幸有详细的文档,以及春哥和邮件列表里面热情的帮助,成了团队里面 bug 最少和几乎不用加班的同学。
2014 年,团队进来了一批新鲜血液,很有技术品味,先后选择 OpenResty 来作为技术方向。不再是一个人在战斗,而另外一个新问题摆在团队面前,如何保证大家都能写出高质量的代码,都能对 OpenResty 有深入的了解?知识的沉淀和升华,成为一个迫在眉睫的问题。
我们选择把这几年的一些浅薄甚至可能是错误的实践,通过 gitbook 的方式公开出来,一方面有利于团队自身的技术积累,另一方面,也能让更多的高手一起加入,让 OpenResty 的使用变得更加简单,更多的应用到服务端开发中,毕竟人生苦短,少一些加班,多一些陪家人。
这本书的定位是最佳实践,同时会对 OpenResty 做简单的基础介绍。但是我们对初学者的建议是,在看书的同时下载并安装 OpenResty,把官方网站的 Presentations 浏览和实践几遍。
目录
序
Socket 编程发展
OpenResty 简介
Lua 入门
Lua 简介
Lua 环境搭建
基础数据类型
表达式
控制结构
if/else
while
repeat
for
break,return
Lua 函数
函数的定义
函数的参数
函数返回值
全动态函数调用
模块
String 库
Table 库
日期时间函数
数学库函数
文件操作
元表
面向对象编程
局部变量
判断数组大小
非空判断
正则表达式
不用标准库
虚变量
抵制使用 module() 定义模块
调用代码前先定义函数
点号与冒号操作符的区别
module 是邪恶的
FFI
什么是 JIT
Nginx
Nginx 新手起步
location 匹配规则
if 是邪恶的
静态文件服务
日志
反向代理
负载均衡
陷阱和常见错误
环境搭建
Windows 平台
CentOS 平台
Ubuntu 平台
Mac OS X 平台
Hello World
与其他 location 配合
获取 uri 参数
获取请求 body
输出响应体
日志输出
简单 API Server 框架
使用 Nginx 内置绑定变量
子查询
不同阶段共享变量
防止 SQL 注入
如何发起新 HTTP 请求
访问有授权验证的 Redis
select+set_keepalive 组合操作引起的数据读写错误
redis 接口的二次封装(简化建连、拆连等细节)
redis 接口的二次封装(发布订阅)
pipeline 压缩请求数量
script 压缩复杂请求
动态生成的 lua-resty-redis 模块方法
LuaCjsonLibrary
json 解析的异常捕获
稀疏数组
空 table 编码为 array 还是 object
PostgresNginxModule
调用方式简介
不支持事务
超时
健康监测
SQL 注入
LuaNginxModule
执行阶段概念
正确的记录日志
热装载代码
阻塞操作
缓存
sleep
定时任务
禁止某些终端访问
请求返回后继续执行
调试
请求中断后的处理
我的 lua 代码需要调优么
变量的共享范围
动态限速
shared.dict 非队列性质
正确使用长链接
如何引用第三方 resty 库
body 在 location 中的传递
典型应用场景
怎样理解 cosocket
如何安全启动唯一实例的 timer
如何正确的解析域名
LuaRestyDNSLibrary
使用动态 DNS 来完成 HTTP 请求
LuaRestyLock
缓存失效风暴
HTTPS 时代
动态加载证书和 OCSP stapling
TLS session resumption
测试
代码静态分析
单元测试
代码覆盖率
API 测试
性能测试
持续集成
灰度发布
Web 服务
API 的设计
数据合法性检测
协议无痛升级
代码规范
连接池
C10K 编程
TIME_WAIT 问题
与 Docker 使用的网络瓶颈
火焰图
什么时候使用
如何安装火焰图生成工具
如何定位问题
Vanilla/香草
Mashape/kong
如何添加自己的 lua api
2016-7 月汇总
如何在后台开启轻量级线程来定时更新共享内存
一个 openresty 内存“泄漏”问题
用 do-end 整理你的代码
lua 中如何 continue
调用 FFI 出现 "table overflow"
如何定位 openresty 崩溃 bug
下载地址: https://www.wenjiangs.com/wp-content/uploads/2023/10/OpenResty-Best-Practices.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论