静态配置

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