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" |
| locations | 是 | List 对象列表。对象字段: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_rule | 否 | Location 的表达式, 例如:“=” 或 其他的正则式 |
| location_name | 是 | location的名字,也就是表达式后面的。 例如: “/” 或 “/test” |
说明:
添加的嵌套location, 删除时只能通过根location一并删除,不支持直接删除子location。
调用样例可戳文档查看
OpenNJet 最早是基于 NGINX1.19 基础 fork 并独立演进,具有高性能、稳定、易扩展的特点,同时也解决了 NGINX 长期存在的难于动态配置、管理功能影响业务等问题。 邮件组 官网