OpenResty教程清晰文字版<>
- 王者
-
115 次阅读
-
107 次下载
- 共 410 页(3.68 M)
-
2021-03-15 02:28:10
点此付费下载 ¥ 20 知币
无需注册也可下载,点击付费按钮在弹框页面选择 "扫码直接下载”
在线预览效果若不佳,推荐下载后阅读 建议在PC浏览器扫码下载
VIP免费
文档简介(最多显示3000字):
《OpenResty 最佳实践》
高并发负载均衡
在 2012 年的时候,加入到奇虎 360 公司,为新的产品做技术选型。由于之前一直混迹在
Python 圈子里面,也接触过 Nginx C 模块的高性能开发,一直想找到一个兼备 Python 快速
开发和 Nginx C 模块高性能的产品。看到 OpenResty 后,有发现新大陆的感觉。
于是在新产品里面力推 OpenResty,团队里面几乎没人支持,经过几轮性能测试,虽然轻松
击败所有的其他方案,但是其他开发人员并不愿意参与到基于 OpenResty 这个“陌生”框架的
开发中来。于是我开始了一个人的 OpenResty 之旅,刚开始经历了各种技术挑战,庆幸有详
细的文档,以及春哥和邮件列表里面热情的帮助,成了团队里面 bug 最少和几乎不用加班的
同学。
2014 年,团队进来了一批新鲜血液,很有技术品味,先后选择 OpenResty 来作为技术方
向。不再是一个人在战斗,而另外一个新问题摆在团队面前,如何保证大家都能写出高质量
的代码,都能对 OpenResty 有深入的了解?知识的沉淀和升华,成为一个迫在眉睫的问题。
我们选择把这几年的一些浅薄甚至可能是错误的实践,通过 gitbook 的方式公开出来,一方面
有利于团队自身的技术积累,另一方面,也能让更多的高手一起加入,让 OpenResty 的使用
变得更加简单,更多的应用到服务端开发中,毕竟人生苦短,少一些加班,多一些陪家人。
这本书的定位是最佳实践,同时会对 OpenResty 做简单的基础介绍。但是我们对初学者的建
议是,在看书的同时下载并安装 OpenResty,把官方网站的 Presentations 浏览和实践几
遍。
请 一直 使用最新的 OpenResty 版本来运行本书的代码。
希望你能 enjoy OpenResty 之旅!
目錄
序
入门篇
Socket 编程发展
OpenResty 简介
Lua 入门
Lua 简介
Lua 环境搭建
基础数据类型
表达式
控制结构
if/else
while
repeat
for
break,return
Lua函数
函数的定义
函数的参数
函数返回值
全动态函数调用
模块
String 库
Table 库
日期时间函数
数学库函数
文件操作
Lua 高阶
元表
面向对象编程
局部变量
判断数组大小
非空判断
正则表达式
不用标准库
虚变量
抵制使用 module() 定义模块
调用代码前先定义函数
点号与冒号操作符的区别
module 是邪恶的
FFI
什么是 JIT
Nginx
Nginx 新手起步
location 匹配规则
if 是邪恶的
静态文件服务
日志
反向代理
负载均衡
陷阱和常见错误
OpenResty
环境搭建
Windows 平台
CentOS 平台
Ubuntu 平台
Mac OS X 平台
Hello World
与其他 location 配合
获取 uri 参数
获取请求 body
输出响应体
日志输出
简单API Server框架
使用 Nginx 内置绑定变量
子查询
不同阶段共享变量
防止 SQL 注入
如何发起新 HTTP 请求
LuaRestyRedisLibrary
访问有授权验证的 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 中的传递
典型应用场景
[Nginx 状态查看器]
怎样理解 cosocket
[如何使用高速缓存]
如何安全启动唯一实例的 timer
如何正确的解析域名
LuaRestyDNSLibrary
使用动态 DNS 来完成 HTTP 请求
LuaRestyLock
缓存失效风暴
stream_lua_module
[TCP 代理负载]
[基本用法]
[故障细节]
balancer_by_lua
[自定义 upstream 选举]
OpenResty 与 SSL
HTTPS 时代
动态加载证书和 OCSP stapling
TLS session resumption
测试
代码静态分析
单元测试
代码覆盖率
API 测试
性能测试
持续集成
灰度发布
Web 服务
API的设计
数据合法性检测
协议无痛升级
代码规范
连接池
C10K 编程
TIME_WAIT 问题
与 Docker 使用的网络瓶颈
火焰图
什么时候使用
如何安装火焰图生成工具
如何定位问题
OpenResty 周边
Vanilla/香草
为什么要开发Vanilla
Vanilla致力解决的问题
组织结构
性能指标
Demo 示例
新浪移动的OpenResty之路
[Vanilla项目实践]
新浪移动评论项目
新浪移动独立产品Vanilla改造
Mashape/kong
Kong名字的来历(others/kong/origin.md)
Kong能解决什么问题(others/kong/apigateway.md)
国内外有哪些类似的产品(others/kong/products.md)
关键概念(others/kong/keyconcepts.md)
集群功能(others/kong/cluster.md)
开发自定义插件(others/kong/plugin.md)
扩展已经存在的插件(others/kong/plugin-upgrad.md)
开发一个新的插件(others/kong/plugin-new.md)
如何添加自己的lua api
零碎知识点记录
2016-7 月汇总
Test::Nginx 能指定现成的nginx.conf,而不是自动生成一个吗
access 日志字符编码问题
share_dict 中的过期时间有时候过期有时候不过期?
Lua 变量的传递和内存的使用
ngx.log 可不可以选择几个不同的 log path
2016-8 月汇总
如何在后台开启轻量级线程来定时更新共享内存
如何使用 os.getenv 获取系统环境变量
2016-10 月汇总
一个 openresty 内存“泄漏”问题
用 do-end 整理你的代码
lua 中如何 continue
调用 FFI 出现 "table overflow"
如何定位 openresty 崩溃 bug
评论
发表评论