OpenNJet 应用引擎介绍,使用API接口管理配置动态管理配置,二种方式动态管理access_log管理

先看下官方对OpenNJet的介绍:

OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序,作为底层引擎,OpenNJet 实现了NGINX 云原生功能增强、安全加固和代码重构,利用动态加载机制可以实现不同的产品形态,如Web服务器、流媒体服务器、负载均衡、代理(Proxy)、应用中间件、API网关、消息队列等产品形态等等。

OpenNJet 应用引擎介绍:

OpenNJet 在云原生架构中作为数据平面,除了提供南北向通信网关的功能以外,还提供了服务网格中东西向通信能力。在原有功能基础上增加了透明流量劫持、熔断、遥测与故障注入等新功能特性。

看完这段介绍大概了解到了,这个OpenNjet应用引擎是基于NGINX开发的。经过我的对比分析,确实是这样子的,如果你用过NGINX,亲自编译过NGINX你会发现OpenNJet的编译选项和NGINX的都是很像的。源代码也是类似,所以对于接触过NGINX的同学来说上手OpenNJet是很容易的。

在这里插入图片描述

官方给了你选择OpenNJet的理由:

性能无损动态配置:动态配置能力解决NGINX长期痛点,实时更改NGINX配置而无需重新启动服务器。不中断服务,快速响应流量需求变化。

在这里插入图片描述

因为我算是稍微深度使用过NGINX的用户,我用NGINX做过线上的代理服务,部署过web服务,在流媒体领域还做过RTMP服务,还做过静态资源库。

我是对OpenNJet的动态配置这个模块很感兴趣的,首先说一下我使用Nginx时遇到的缺陷:Nginx确实是存在你如果想修改了配置,必须要重启服务,这也是领人头疼的,一旦运行起来,如果重新启动一下,会造成很多额外的损失。


安装:

可以看到官方文档来看:https://njet.org.cn/docs/quickstart/,可以看到各个系统的安装教程。NJet官方提供centos,ubuntu,cloudOS等多个版本的2进制安装包,及软件源。

二进制安装包,可以从gitee的主仓库选择对应的版本进行下载,或通过软件源的方式自动获得后续的 更新,目前支持centos及ubuntu的软件源配置。除NJet主应用外,NJet的某些功能模块会通过独立的 二进制发行包进行可选安装,当前提供的有njet-otel模块,用于支持调用链跟踪。

在这里插入图片描述

Ubuntu通过deb包安装:

这种方式就是拿来即用。使用是没有问题的,当然了如果你要做个测试或者当做一个服务去使用的话,完全没有问题。但是你想进行二次开发的话,这个方式就行不通了,需要自己从头到尾编译一遍。

下载deb安装包:

https://gitee.com/njet-rd/njet/releases
root@iZbp1hfmpqxaf3x6i7ker9Z:~# wget https://gitee.com/njet-rd/njet/releases/download/v3.2.1/njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb
--2025-03-20 20:50:00--  https://gitee.com/njet-rd/njet/releases/download/v3.2.1/njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb
Resolving gitee.com (gitee.com)... 180.76.198.77, 180.76.198.225, 180.76.199.13
Connecting to gitee.com (gitee.com)|180.76.198.77|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://gitee.com/njet-rd/njet/attach_files/2030358/download/njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb [following]
--2025-03-20 20:50:01--  https://gitee.com/njet-rd/njet/attach_files/2030358/download/njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb
Reusing existing connection to gitee.com:443.
HTTP request sent, awaiting response... 302 Found
Location: https://foruda.gitee.com/attach_file/1737096946595142059/njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb?token=dfde8053500f3707e054c18c3f6b784f&ts=1742475001&attname=njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb [following]
--2025-03-20 20:50:01--  https://foruda.gitee.com/attach_file/1737096946595142059/njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb?token=dfde8053500f3707e054c18c3f6b784f&ts=1742475001&attname=njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb
Resolving foruda.gitee.com (foruda.gitee.com)... 180.76.198.77, 180.76.199.13
Connecting to foruda.gitee.com (foruda.gitee.com)|180.76.198.77|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16483120 (16M) [application/vnd.debian.binary-package]
Saving to: ‘njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb’

njet_3.2.1-1~ubuntu.18.04~bionic_am 100%[==================================================================>]  15.72M   536KB/s    in 31s     

2025-03-20 20:50:32 (515 KB/s) - ‘njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb’ saved [16483120/16483120]

root@iZbp1hfmpqxaf3x6i7ker9Z:~# dpkg -i njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb 
Selecting previously unselected package njet.
(Reading database ... 89128 files and directories currently installed.)
Preparing to unpack njet_3.2.1-1~ubuntu.18.04~bionic_amd64.deb ...
Unpacking njet (3.2.1) ...
Setting up njet (3.2.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/njet.service → /usr/lib/systemd/system/njet.service.
Processing triggers for libc-bin (2.39-0ubuntu8.4) ...

看着一句:Created symlink /etc/systemd/system/multi-user.target.wants/njet.service → /usr/lib/systemd/system/njet.service.

说明已经在系统中创建了service的方式。


功能体验:

如何控制njet服务,njet做到了系统的services里,可以使用systemctl命令来控制服务,这一点对于使用者来说很方便。

然后就可以启动njet服务和关闭njet服务了:

systemctl start njet #启动服务
systemctl stop njet #停止服务

查看是否启动成功

在这里插入图片描述
浏览器输入:http://127.0.0.1:8080/,出现如下界面既成功:

在这里插入图片描述


二、使用API接口动态管理access_log管理配置:

njet提供了API接口来动态操作这一切,例如启动成功后,如果你什么都没改,会有一个8081的端口,可以访问:http://127.0.0.1:8081/doc/swagger/ 进入 swagger的api文档。

在这里插入图片描述

找到上面“动态access log配置接口”这里,我们找到以下接口进行添加操作:

在这里插入图片描述

这里大概就是发送一个PUT请求,将日志设置的规则告诉Njet:

curl -X 'PUT' \
  'http://47.96.21.133:8081/api/v1/config/http_log' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "servers": [
    {
      "listens": [
        "0.0.0.0:8080"
      ],
      "serverNames": [
        ""
      ],
      "locations": [
        {
          "location": "/",
          "accessLogOn": true,
          "accessLogs": [
            {
              "path": "./logs/access_log.log",
              "formatName": "test"
            }
          ]
        }
      ]
    }
  ],
  "accessLogFormats": [
    {
      "name": "test",
      "format": "$remote_addr - $remote_user [$time_local] \\\"$request\\\" $status $body_bytes_sent \\\"$http_referer\\\" \\\"$http_user_agent\\\"",
      "escape": "default"
    }
  ]
}'

在这里插入图片描述
可以看到我们设置成功规则后,在logs目录下确实生成了一个日志文件access_log.log,并且在页面请求时,也发现了相关的日志信息。

接下来,我们再动态设置一下其它的路径,看看是否也能生效呢?我们设置为access_log_back.log这个文件中。

在这里插入图片描述
可以看到当我们修改为access_log_back.log文件时,访问的日志就会跑到这个文件中,非常的方便来动态控制日志输出的文件位置。

在这里插入图片描述


总结:

本次体验我从3个角度来总结一下对OpenNjet的初体验。

  • 上手快:对于使用者来说,如果使用者用过NGINX的话,用njet可以说是秒秒钟上手,真的很容易。因为一些相关的配置可以很完美的和NGINX融合,也可以看作为向下兼容。对于用户来说,我认为上手快就是一大特点。

  • 易用:为什么说是易用呢,因为njet提供了多种配置njet的方式,还增加了动态配置的功能,拿API接口来说吧,这一点就打败了市场上很多普通web服务器。

  • 第三方用户友好:因为有动态配置,对于第三方用户是无感的,企业修改一些配置,第三方用户如何还在进行着操作,此时是不受影响的,没有丝毫感觉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值