讲讲动态 Location

134 阅读2分钟

NGINX 向云原生演进,All in OpenNJet 


 功能说明

本系统支持对location模块的动态添加、删除,可以对locaiton进行便捷的配置和所需指令功能的添加使用。

该模块支持ACL控制

配置说明

请参考标准配置文件章节配置,全量配置即可配置上此功能,但请注意一定要包含以下指令和块:

njet.conf 配置文件中务必有此模块

load_module modules/njt_http_location_module.so;

ctrl.conf配置文件中务必包含这些模块

load_module modules/njt_http_sendmsg_module.so;
load_module modules/njt_http_location_api_module.so;

http {
     server {
        listen       8081;
        location /dyn_location {
        dyn_location_api;
        }
     }
}

动态location,配置ACL控制

load_module modules/njt_http_sendmsg_module.so;
load_module modules/njt_http_location_api_module.so;

 server {
        listen       8081;
       
        location /dyn_location {
            dyn_location_api;
            limit_except GET {
               auth_basic "NGINX plus API";
               auth_basic_user_file /etc/njet/htpasswd;
            }
        }
  }

API 说明

动态location增加说明:

配置项 必填 配置说明 
type “add”  添加location
addr_port添加的主机的,port 端口。  例如:"192.168.40.203:8000", 或 “0.0.0.0:8000”
server_name主机的server_name, 例如:"cluster.tmlake.com"
locationsList 对象列表。对象字段:location_rule,//可以为空。location_name,  //不能为空。location_body, //location_body 或 proxy_pass 必须有一个不为空。结尾不要带;proxy_pass    //location_body 或 proxy_pass 必须有一个不为空。结尾不要带;          //proxy_pass 后面只能跟配置文件预定义的upstream 名字。 其他的不支持 

说明:

location_body 或 proxy_pass 字段均可以为空,结尾不要带;

proxy_pass 现在支持http,https,ip地址,unix socket,域名,变量等。(例如:http://backend1、https://backend1、http://127.0.0.1:443、http://$upstream_name、http://unix:/var/lib/njet/njet-502-server.sock等)

动态location删除说明:

配置项 必填 配置说明 
type “del”  删除location
addr_port添加的主机的,port 端口。  例如:"192.168.40.203:8000", 或 “0.0.0.0:8000”
server_name主机的server_name, 例如:"cluster.tmlake.com"
location_ruleLocation 的表达式, 例如:“=”  或 其他的正则式
location_namelocation的名字,也就是表达式后面的。 例如: “/”  或 “/test”

说明:

添加的嵌套location, 删除时只能通过根location一并删除,不支持直接删除子location。

调用样例可戳文档查看

OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。 邮件组  官网