用 content_by_lua 可在 openresty/nginx 中零依赖、低延迟地搭建轻量 mock 服务,支持动态响应、延迟模拟、错误注入及本地 json 文件读取,前端仅需修改 hosts 即可联调。

用 content_by_lua 在 OpenResty/Nginx 中快速搭一个轻量 Mock 服务,不启后端、不写接口、不配代理,前端改个 host 就能联调,非常高效。
为什么选 content_by_lua 而不是其他方式
它直接运行在 Nginx 请求处理阶段,零依赖、低延迟、高并发。相比起启动 Express/Koa 服务,省去进程管理、端口冲突、跨域配置等麻烦;比 nginx 的 return 或 echo 模块更灵活,支持动态逻辑(如根据 query 参数返回不同数据、模拟延迟、随机错误)。
基础 Mock 配置示例
在 server 块中添加 location,用 Lua 返回 JSON:
前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。
location /api/user {
content_by_lua_block {
ngx.header.content_type = "application/json;charset=utf-8"
ngx.say('{"id": 1, "name": "张三", "role": "admin"}')
}
}
注意点:
- 必须显式设置
Content-Type,否则默认是text/plain - 用
ngx.say输出响应体,不能用print或ngx.log - 路径匹配区分大小写,建议统一小写 + 下划线风格
进阶:带逻辑的 Mock 行为
可以轻松实现条件响应,比如:
- 按 query 参数返回不同用户:
/api/user?id=2→ 返回李四 - 模拟加载延迟:
ngx.sleep(0.8)模拟 800ms 后响应 - 按请求头或 cookie 控制开关:
ngx.req.get_headers()["x-mock-mode"] == "error"时返回 500 - 读取本地 JSON 文件(需开启
lua_code_cache off开发时热更新):ngx.location.capture("/mock_data/user.json")
联调集成小技巧
让前端无缝切换真实/_mock_ 环境:
- 开发环境 hosts 绑定
api.example.com → 127.0.0.1,Nginx 监听该域名 - Mock 接口路径与真实后端完全一致,前端代码无需修改
- 加个全局开关(如 URL 中带
?mock=1),Lua 判断是否启用 Mock - 配合
log_by_lua记录请求日志,方便排查前端是否发错路径
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










