xfy 6543422281 docs: 添加 Nginx 配置和 Lua 脚本示例文档
- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板
- lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:59:22 +08:00

67 lines
1.7 KiB
Nginx Configuration File

http {
lua_package_path "/path/to/lua/?.lua;;";
# 在 http 级别初始化 metrics 共享字典
lua_shared_dict metrics 10m;
init_by_lua_block {
local metrics = require "metrics"
metrics.init(ngx.shared.metrics)
}
log_format json_combined escape=json
'{'
'"time_local":"$time_iso8601",'
'"remote_addr":"$remote_addr",'
'"request":"$request",'
'"status":$status,'
'"body_bytes_sent":$body_bytes_sent,'
'"request_time":$request_time,'
'"upstream_response_time":"$upstream_response_time",'
'"http_referer":"$http_referer",'
'"http_user_agent":"$http_user_agent"'
'}';
server {
listen 80;
server_name example.com;
# 在 access 阶段设置请求开始时间
set $request_start_time '';
access_by_lua_block {
ngx.var.request_start_time = ngx.now()
}
# 使用 Lua 自定义日志格式
log_by_lua_block {
local log_formatter = require "log_formatter"
log_formatter.log(ngx)
}
location / {
proxy_pass http://backend;
}
# 指标查询接口
location /metrics {
default_type text/plain;
content_by_lua_block {
local metrics = require "metrics"
metrics.report(ngx)
}
}
# 指标重置接口(可选,用于调试)
location /metrics/reset {
default_type text/plain;
content_by_lua_block {
local metrics = require "metrics"
metrics.reset(ngx)
ngx.say("metrics reset")
}
}
}
}