动态lua
1. 功能描述
该模块允许通过 /api/v1/config/http_lua 动态配置接口, 动态设置 content_by_lua_block 及 access_by_lua_block的内容。
同时配置access_by和content_by时,优先触发access_by内容。
2. 依赖模块
动态lua功能依赖模块:
load_module /usr/local/njet/modules/njt_http_lua_module.so;
load_module /usr/local/njet/modules/njt_http_dyn_lua_module.so;
特殊说明:njt_http_lua_module.so要在njt_http_lua_module.so上面。
3. 配置说明
load_module /usr/local/njet/modules/njt_http_lua_module.so;
load_module /usr/local/njet/modules/njt_http_dyn_lua_module.so;
http {
...
server {
lua_package_path "$prefix/lualib/lib/?.lua;/usr/local/njet/modules/?.lua;;";
lua_package_cpath "$prefix/lualib/clib/?.so;;";
...
}
}
4. 调用样例
4.1 API说明
查询接口:
GET http://IP+port/api/v1/config/http_lua
修改接口:
PUT http://IP+port/api/v1/config/http_lua
4.2 通过PUT接口添加动态lua
curl -X PUT http://127.0.0.1:8081/api/v1/http_lua -d'
{
"servers": [
{
"listens": [
"0.0.0.0:8080"
],
"serverNames": [
"localhost"
],
"locations": [
{
"location": "/",
"lua": {}
},
{
"location": "/test_lua",
"lua": {
"content_by": "njt.say(\"lua new test str\");",
"access_by": "njt.exit(njt.HTTP_FORBIDDEN);"
}
}
]
}
]
}
4.3 通过GET接口查看动态lua
curl -X GET http://127.0.0.1:8081/api/v1/http_lua
{
"servers": [
{
"listens": [
"0.0.0.0:8080"
],
"serverNames": [
"localhost"
],
"locations": [
{
"location": "/",
"lua": {}
},
{
"location": "/test_lua",
"lua": {
"content_by": "njt.say(\"lua new test str\");",
"access_by": "njt.exit(njt.HTTP_FORBIDDEN);"
}
}
]
}
]
}