用 content_by_lua 可在 OpenResty/Nginx 中零依赖、低延迟地搭建轻量 Mock 服务,支持动态响应、延迟模拟、错误注入及本地 JSON 文件读取,前端仅需修改 hosts 即可联调。
用
在 OpenResty/Nginx 中快速搭一个轻量 Mock 服务,不启后端、不写接口、不配代理,
前端
改个 host 就能联调,非常高效。
为什么选 content_by_lua 而不是其他方式
它直接运行在 Nginx 请求处理阶段,零依赖、低延迟、高并发。相比起启动 Express/Koa 服务,省去进程管理、端口冲突、跨域配置等麻烦;比 nginx 的
或
模块更灵活,支持动态逻辑(如根据 query 参数返回不同数据、模拟延迟、随机错误)。
基础 Mock 配置示例
在 server 块中添加 location,用 Lua 返回 JSON:
注意点:
面向设计的AXUI前端框架表单
面向设计的AXUI前端框架表单是一款包含表格、列表、弹窗等的AXUI前端框架表单下载。
下载
立即学习
“
前端免费学习笔记(深入)
”;
必须显式设置
,否则默认是
用
输出响应体,不能用
或
路径匹配区分大小写,建议统一小写 + 下划线风格
进阶:带逻辑的 Mock 行为
可以轻松实现条件响应,比如:
按 query 参数返回不同用户:
→ 返回李四
模拟加载延迟:
模拟 800ms 后响应
按请求头或 cookie 控制开关:
时返回 500
读取本地 JSON 文件(需开启
开发时热更新):
联调集成小技巧
让前端无缝切换真实/_mock_ 环境:
开发环境 hosts 绑定
,Nginx 监听该域名
Mock 接口路径与真实后端完全一致,前端代码无需修改
加个全局开关(如 URL 中带
),Lua 判断是否启用 Mock
配合
记录请求日志,方便排查前端是否发错路径
content_by_luareturnecholocation /api/user {
content_by_lua_block {
ngx.header.content_type = "application/json;charset=utf-8"
ngx.say('{"id": 1, "name": "张三", "role": "admin"}')
}
}Content-Typetext/plainngx.sayprintngx.log/api/user?id=2ngx.sleep(0.8)ngx.req.get_headers()["x-mock-mode"] == "error"lua_code_cache offngx.location.capture("/mock_data/user.json")api.example.com → 127.0.0.1?mock=1log_by_lua