logo头像

Corey.Wang

OpenResty

本文于587天之前发表,文中内容可能已经过时。

一句话介绍

OpenResty = Nginx + LuaJit + more lib of Lua
openresty官网
推荐学习教程:OpenResty 最佳实践 By 极客学院

安装OpenResty

没有比官网的文档更好的了OpenResty 安装

Nginx Lua模块化执行顺序

1
2
3
4
5
6
7
set_by_lua #流程分之处理判断变量初始化
rewrite_by_lua #转发、重定向、缓存等功能(例如特定请求代理到外网)
access_by_lua #IP 准入、接口权限等情况集中处理(例如配合 iptable 完成简单防火墙)
content_by_lua #内容生成
header_filter_by_lua #应答 HTTP 过滤处理(例如添加头部信息)
body_filter_by_lua #应答 BODY 过滤处理(例如完成应答内容统一成大写)
log_by_lua #回话完成后本地异步完成日志记录(日志可以记录在本地,还可以同步到其他机器)

Lua Code Cache

lua-nginx-module directives

1
2
# http, server, location, location if
lua_code_cache off; #方便开发,线上一定要关闭,否则影响性能

Lua Kafka

使用的开源库:https://github.com/doujiang24/lua-resty-kafka
直接下载源码到任意目录(最好是放到OpenResty/lualib下,方便统一管理)

1
2
# for http {}
lua_package_path "/path/to/lua-resty-kafka/lib/?.lua;;";

如果kafka使用了域名,需要在nginx.conf中开启dns解析,否则会导致域名解析失败,配置如下:

1
2
# for http {}
resolver 10.10.10.10;