diff --git a/lib/index.js b/lib/index.js index b742374..caae005 100644 --- a/lib/index.js +++ b/lib/index.js @@ -44,6 +44,7 @@ class Router { const space = req.headers[SPACE_NAME]; const group = req.headers[GROUP_NAME]; const name = req.headers[ENV_NAME]; + const envName = req.headers[ENV_HEAD]; const workers = await this.getWorkers(); if (!workers.totalLen || req.socket.destroyed) { destroy(req); @@ -57,12 +58,12 @@ class Router { } const servers = workers._servers; const i = index++ % servers.totalLen; - headers[ENV_HEAD] = `${i}`; + headers[ENV_HEAD] = envName || `${i}`; return proxyToNohost(servers[i], req, res); } const hash = parseInt(crc32(`${space}/${group}/${name || ''}`), 16) % workers.totalLen; - const env = `$${hash}`; + const env = envName || `$${hash}`; headers[ENV_HEAD] = env; if (req.isUIRequest) { headers['x-whistle-nohost-ui'] = 1; @@ -86,6 +87,7 @@ class Router { Router.SPACE_NAME = SPACE_NAME; Router.GROUP_NAME = GROUP_NAME; Router.ENV_NAME = ENV_NAME; +Router.ENV_HEAD = ENV_HEAD; Router.NOHOST_RULE = 'x-whistle-nohost-rule'; Router.NOHOST_VALUE = 'x-whistle-nohost-value'; Router.CLIENT_ID = 'x-whistle-client-id';