OpenNJet最早是基于NGINX1.19基础,fork并独立演进的开源应用引擎,并随着NGINX版本迭代,吸收上游NGINX的更新,已经同步更新到NGINX1.23.1版本。OpenNJet的目标在于适应国内特定的技术规范及标准,如国密算法套件支持,并构建安全可控的云原生数据面,支撑我国云原生产业生态。作为底层引擎,OpenNJet利用动态加载机制可以实现不同的产品形态,如API网关、消息代理、出入向代理,负载均衡,WAF等等
想要了解更多可以查看OpenNJet官网链接:https://njet.org.cn/
本文带大家使用CentOS 编译环境开发
执行命令
sudo yum --enablerepo=extras install -q -y epel-release centos-release-scl-rh https://repo.ius.io/ius-release-el7.rpm
如图:
sudo curl -o /etc/yum.repos.d/mercurial.repo https://www.mercurial-scm.org/release/centos7/mercurial.repo
如图
如图:
ls -al /etc/yum.repos.d/mercurial.repo
sudo yum install -y devtoolset-8-make devtoolset-8-toolchain ca-certificates mercurial zlib-devel cmake3 ninja-build libunwind-devel pcre-devel openssl-devel libtool libtool-ltdl
如图;
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/gcc /usr/local/bin/gcc
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/c++ /usr/local/bin/c++
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/cc /usr/local/bin/cc
sudo ln -s /opt/rh/devtoolset-8/root/usr/bin/make /usr/local/bin/make
如图:
sudo bash -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
git仓库地址:https://github.com/OpenNJet/OpenNJet 可以下载zip文件
解压:
unzip OpenNJet-main.zip
编译
sh build_cc.sh conf
*执行:**make
make
执行成功截图如下:
njet -h //显示帮助信息
njet -p /tmpr/njet/ -c conf/njet.conf //启动
njet -t //测试配置信息是否有错误
njet -v //显示版本
njet -s stop 或者 kill -TERM {进程id} //快速停止
njet -s reload 或者 kill -HUP {进程id}//重新加载配置
配置在客户端,客户端所有流量都通过正向代理去访问
指令介绍
proxy_connect
Syntax: proxy_connect Default: none Context: server
启用“ CONNECT”HTTP 方法支持。
proxy_connect_allow
Syntax: proxy_connect_allow all | [port ...] | [port-range ...] Default: 443 563 Context: server
此指令指定代理 CONNECT 方法可以连接到的端口号或范围的列表。 默认情况下,只启用默认的 https 端口(443)和默认的 snews 端口(563)。 使用此指令将覆盖此默认值,并仅允许连接到列出的端口。
All 值将允许所有端口进行代理。 给定值将允许指定的端口代理。 port-range 将允许指定的端口到代理的范围,例如:
Plaintext
proxy_connect_allow 1000-2000 3000-4000; # allow range of port from 1000 to 2000, from 3000 to 4000.
proxy_connect_connect_timeout Syntax: proxy_connect_connect_timeout time Default: none Context: server
定义与代理服务器建立连接的超时。
代理配置示例 Example
Bash
server {
listen 80; //端口设定
resolver 114.114.114.114; # dns解析服务器
proxy_connect;
proxy_connect_allow 443, 456;
proxy_connect_connect_timeout 10s;
location /{
proxy_pass $scheme://$host$request_uri; #proxy_pass 用来要代理的网站,
#$scheme是客户端请求的协议(如http,https);
#$host是客户端请求的域名(如baidu.com);
#$request_uri是客户端访问的url地址(如/baidu?s=12345)。
#他们拼接成就是http://baidu.com/baidu?s=12345
}
}
}
客户端配置(win11系统为例)
当我第一次体验OpenNJet时,我被其在性能和灵活性方面的卓越表现所吸引。首先,OpenNJet基于NGINX引擎,利用了NGINX1.23.1版本的最新功能,为系统提供了出色的性能和稳定性。无论是处理大流量还是保障系统稳定运行,OpenNJet都表现出色。 其次,OpenNJet提供了丰富的功能模块,包括API网关、消息代理、出入向代理、负载均衡、WAF等,这些模块可以根据需求进行动态加载,为系统提供了极大的灵活性和可定制性。例如,我可以根据业务需求轻松地添加API网关和负载均衡功能,而不需要重新配置整个系统。
在实际使用中,我发现OpenNJet的易用性也很高。它提供了清晰的配置文件和详尽的文档,使得配置和管理变得非常简单和直观。我可以轻松地根据文档指引完成各种配置,而无需过多的技术背景知识。
对于新手来说,开始使用OpenNJet可能会感到有些挑战,但以下建议可以帮助他们更轻松地入门: