静态配置
1.功能描述
NJet 具有根据业务的需求,动态的 添加,删除,location 的能力,由于不同的路由,需要不同的规则。 例如:根据请求头判断是否启用缓存、根据查询参数配置不同的后端服务等。就需要用到map 的功能,动态的location 也就对应了动态的map 功能,动态的添加,删除map,动态的修改map 的健值对。而这些都不需要重启服务的。 本文中将演示通过新添加的location,来请求通过动态添加,删除map ,来获取映射的 变量值。
2.依赖模块
load_module /usr/lib/njet/modules/njt_stream_dyn_map_module.so;
3.指令说明
Map 指令的详细描述可参照nginx 文档: http://nginx.org/en/docs/http/ngx_http_map_module.html#map
map 指令的语法如下:
map
$variable $new_variable {
key value;
key value;
...
default value;
}
规则:
- 多个map 目标变量相同,后边的生效。
- Keyfrom 可以多变量。
4.配置样例
基础配置如下:
njet.conf
load_module /usr/lib/njet/modules/njt_stream_dyn_map_module.so;
helper ctrl /usr/lib/njet/modules/njt_helper_ctrl_module.so njet_ctrl.conf;
helper broker /usr/lib/njet/modules/njt_helper_broker_module.so;
http {
include mime.types;
server {
server_name loaclhost;
listen 8002;
location / {
return 200 "ok";
}
}
}
stream {
map $remote_addr $vara {
127.0.0.1 "it_is_local";
default $remote_addr;
}
server {
listen 1234;
return "${vara}\n";
}
}
njet_ctrl.conf:
load_module /usr/lib/njet/modules/njt_http_sendmsg_module.so;
load_module /usr/lib/njet/modules/njt_ctrl_config_api_module.so;
。。。
http {
dyn_sendmsg_conf conf/iot-ctrl.conf;
config_req_pool_size 1000;
access_log logs/access_ctrl.log combined;
include mime.types;
server {
listen 8088;
location /api {
dyn_module_api;
}
location /doc {
doc_api;
}
location /metrics {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
通过curl 访问:
nc localhost 8002
返回:
it_is_local