Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@nohost/router
Advanced tools
以下需要使用最新版的 nohost:https://github.com/nohosts/nohost
nohost 集群部署时,用来分发请求到各个节点的路由器。
npm i --save @nohost/router
const Router = require('@nohost/router');
const {
SPACE_NAME,
GROUP_NAME,
ENV_NAME,
NOHOST_RULE,
NOHOST_VALUE,
CLIENT_ID,
CLIENT_ID_FILTER,
writeHead,
writeError,
} = Router;
// 初始化传人部署的 nohost 服务器列表
const router = new Router([
{
host: '10.11.12.13',
port: 8080
},
...
]);
// 更新服务器列表
// 支持http、websocket、tunnel
try {
const svrRes = await router.proxy(req, res);
writeHead(res, svrRes);
svrRes.pipe(res);
} catch (err) {
writeError(res, err);
}
// 查看抓包请求
router.proxyUI(req, res);
router.update([
{
host: '10.11.12.13',
port: 8080
},
{
host: '10.31.32.33',
port: 8080
},
...
]);
router 每 12s 会检测一遍所有服务,并剔除不可用的
const getOptions = (req) => {
const { headers } = req;
const spaceName = 'imweb';
let gruopName;
let envName;
if (headers.host === 'km.oa2.com') {
gruopName = 'avenwu';
envName = '测试'; // 可选
} else if (req.headers.host !== 'km.oa.com') {
gruopName = 'avenwu2';
envName = '测试2'; // 可选
}
return {
rules: 'file://{test.html} km.oa2.com www.test2.com',
values: { 'test.html': 'hell world.' },
spaceName,
gruopName,
envName,
callback: console.log, // 可选
// clientId: 'test', // 如果从外网转发过来的带登录态请求,设置下 clientId 方便插件当前用户的请求抓包
};
};
router.proxy(req, res, getOptions(req));
// 或自己处理响应
// const svrRes = await router.proxy(req);
router.proxyUI(req, res, getOptions(req));
const Router = require('@nohost/router');
const router = new Router({
host: '10.x.x.x',
port: 8080,
});
router.proxy(req, res); // 同测试用例,无需设置 space / group,env 按需设置
router.proxyUI(req, res); // 同测试用例,无需设置 space / group,env 按需设置
具体实现参考:测试用例
FAQs
Nohost cluster router
We found that @nohost/router demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.