常见问题
1.访问不存在的接口,会报500的错误。
2.njet_ctrl.conf中自定义了接口location,curl命令可以正常使用,但是doc gui无法使用。
njt_ctrl标准配置文件:需要包含如下location:
/api 提供api维护
/metrics 指标输出接口
/doc/swagger openapi接口
3.安装后如何启动
使用 rpm 或 deb 二进制安装后,会在 /usr/lib/systemd/system/ 目录下添加 service文件。
使用 sudo systemctl start njet 启动服务。
使用 sudo systemctl stop njet 停止服务。
4.安装后如何解决和其他程序的端口冲突问题?
OpenNJet 安装后, /usr/local/njet/conf/ 目录下的初始配置文件, 监听 8080 和 8081 端口。
如果主机上有其它应用以及使用了对应端口, 可以修改配置文件路径下的njet.conf 及njet_ctrl.conf 文件。
5.在容器中如果出现使用ip6tables指令时出现报错
sudo ip6tables -t nat -S
ip6tables v1.6.1: can't initialize ip6tables table `nat': Table does not exist (do you need to insmod?)请在宿主机执行指令
sudo modprobe ip6table_filter6.测试OpenNJet功能时,报 “msg”: “not register api module”
A:A:报not register api module 是因为配置中没有加载动态库,请参考OpenNJet文档中的具体功能模块的配置说明加载动态库,重新启动NJet
7.使用upstream api查询不到upstream,返回404
A:使用upstream api时,必须先创建好一组upstream,并配置zone,才可以对upstream中成员进行增删改查等操作。
8.启动NJet 时,报 njt_helper_ctrl_module 版本不匹配错误 (0 != 1023001)
问题描述:
启动NJet 时,报module “/usr/local/njet/modules/njt_helper_ctrl_module.so(njt_helper_ctrl_module.so)”; version 0 instead of 1023001 in /usr/local/njet/conf/njet_ctrl.conf:15** .
解决方法:
A:是因为copilot配置在njet_ctrl.conf 里的原因,应该配置在njet.conf 里, 同样copilot包括copilot:ctrl,copilot:broker,copilot:ha,所以这3个都要配置在njet.conf 配置文件里, 关于copilot的详细说明请参考OpenNJet 使用手册v2.1.0 的3.2 章节
9.新增域名、location有对应的键值用于定位吗?
9.1动态新增域名,需要使用动态VS 的api 接口(具体参考手册), 使用ip,port 来定位。
主要参数需要:操作类型type, ip+port,以及 新增加的server_name,server_body 字段非必须。
例如:
{
"type": "add",
"addr_port": "0.0.0.0:90",
"server_name": "server-901",
"server_body": "return 200 server-901;"
}
9.2新增动态location,需要使用动态location 的api 接口(具体参考手册), 使用ip,port, VS名 来定位。
主要参数需要:操作类型type, ip+port,以及 新增加的server_name,locations 字段。
例如:
{
"type": "add",
"addr_port": "0.0.0.0:90",
"server_name": "server-90",
"locations": [{
"location_rule": "=",
"location_name": "/ttt1 ",
"location_body": "return 200 ttt1"
}]
}
注意:
- 如果需要同时新增动态VS, 和 动态location,是需要分别两次调用不同的api 来完成。
- 每次只能添加,删除单个VS 或 location。多个的话需要多次调用。
10.https://njet.org.cn/cases/http3_ntls_support/请问这个有具体的配置文件吗?
A:
当时配置成功的server如下,此外还需要客户端支持quic协议及国密套件
server {
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_ntls off;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
# ssl_certificate /usr/local/njet/conf/sm2_sign.cer /usr/local/njet/conf/sm2_enc.cer;
# ssl_certificate_key /usr/local/njet/conf/sm2_sign.key /usr/local/njet/conf/sm2_enc.key; ssl_certificate /usr/local/njet/conf/sm2_sign.cer ;
ssl_certificate_key /usr/local/njet/conf/sm2_sign.key;
server_name [njet.org.cn](http://njet.org.cn);
location / {
add_header Alt-Svc 'h3=":$server_port";
ma=86400';
root html;
}
...
}目前只支持单证书
需要用tongsuo8.3编译,
./build_cc.sh --with_tongsuo_8_3 conf
./build_cc.sh make最好不要用之前编译过的,重新下载或解压
11.FTP代理场景异常:直连正常但代理返回425 (RETR response)
问题描述:
ftp代理:客户端直连ftp 服务是可以正常上传下载文件的,通过njet 代理连接ftp 服务返回curl:(19) RETR response:425
解决方法:
A:大概原因是在连接中变换了IP地址.解决方法:
# vi /etc/vsftpd/vsftpd.conf
添加:pasv_promiscuous=YES
保存退出
# service vsftpd restart12.Linux系统core dump配置方法
- 设置core 生成独立文件
vi /etc/systemd/coredump.conf [Coredump] Storage=external #这行配置打开作用:把 core 写成独立文件放到 /var/lib/systemd/coredump/,同时在 journal 里只留一条小记录,含文件路径。
2.修改core_pattern
- 临时生效(立刻起效,重启丢失)
sudo sh -c 'echo "|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" > /proc/sys/'- 永久生效(重启仍保留)
上述更改是临时的。要使其永久生效,你必须编辑 /etc/sysctl.d/ 目录中的一个文件。 创建一个新文件或编辑一个已存在的文件,例如 /etc/sysctl.d/50-coredump.conf。
echo 'kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h' | sudo tee /etc/sysctl.d/50-coredump.conf
sudo sysctl --system # 立即加载,无需重启13. 如何在无 root 和 sudo 权限的服务器上部署 NJet 应用服务器?
问题描述:
由于安全规范或环境限制,目标部署服务器没有 root用户权限,也无法使用sudo命令。我们需要在这样的环境中安装并启动 NJet 应用服务器,并希望将其安装到指定的自定义目录。
解决方法:
步骤一:在一台有权限的机器,利用rpm或deb文件安装。这里用rpm 包安装的。安装后会在/usr/local/njet 目录下

步骤三:把/usr/local/njet直接copy 到没有权限机器的特定目录

步骤四:修改njet.conf ,添加配置指令privileged_agent off;
步骤五:启动njet,使用njet -p 特定目录 -c 配置文件 命令启动

14.lua路径问题:为什么没有访问默认路径下的so
问题描述:
关于lua库的问题,根据如下截图上的报错,我发现.lua文件,njet会自动去找安装目录下的位置查找(绿色),但是.so的文件并没有去找,只去了配置文件里指定的位置和默认的lua文件夹。想了解一下这个是需要什么特殊设置还是说就是这样设定的。之前的工程出于部署方便,使用的openresty自带模块的都是通过默认路径查找的,配置文件中没有明显的写出来。
解决方法:
这个是njet 编译进去的 luajit 的一些 default path。是 src/ext 底下 http lua 模块的一些默认路径。如果没有在可执行文件中的默认路径,就通过对应的环境变量进行配置,如下图展示:
15.如何正确升级NJet v3.3.1.2
A: 在升级njet 包和卸载之前,必须进行完整备份!
注意:在NJet4.0.0.0 版本及之后,支持卸载安装包时如果ctrl_kv.conf, goaccess.conf,njet.conf,njet_ctrl.conf这4个文件有修改会自动保存,但是4.0.0.0 之前的需要先备份配置文件
备份配置文件(4.0.0.0之前的需要先备份):
sudo cp -r /usr/local/njet/conf /usr/local/njet/conf_backup备份html(任何版本都需要备份):
sudo cp -r /usr/local/njet/html /usr/local/njet/html_backupB:卸载njet 包:如果已安装其他包,需要先卸载
rpm 安装包:
yum remove njet如果是deb安装包就不需要卸载
C:升级安装包(以3.3.1.2 为例):
rpm 安装包:
yum localintall njet-3.3.1.2-1.el7.x86_64.rpm如果是deb 安装包:
dpkg -i njet_3.3.1.2-1~ubuntu.18.04~bionic_amd64.deb安装完成







