45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import http from 'node:http';
|
|
|
|
const routes = [
|
|
{ prefix: '/gateway/api', port: 15001 },
|
|
{ prefix: '/gateway', port: 15000 },
|
|
{ prefix: '/hwe/api', port: 15015 },
|
|
{ prefix: '/hwe', port: 15014 },
|
|
];
|
|
|
|
const server = http.createServer((request, response) => {
|
|
const route = routes.find((candidate) => request.url?.startsWith(candidate.prefix));
|
|
if (!route) {
|
|
response.writeHead(404);
|
|
response.end();
|
|
return;
|
|
}
|
|
|
|
const upstream = http.request(
|
|
{
|
|
host: '127.0.0.1',
|
|
port: route.port,
|
|
method: request.method,
|
|
path: request.url,
|
|
headers: {
|
|
...request.headers,
|
|
host: `127.0.0.1:${route.port}`,
|
|
},
|
|
},
|
|
(upstreamResponse) => {
|
|
response.writeHead(upstreamResponse.statusCode ?? 502, upstreamResponse.headers);
|
|
upstreamResponse.pipe(response);
|
|
}
|
|
);
|
|
|
|
upstream.on('error', () => {
|
|
if (!response.headersSent) {
|
|
response.writeHead(502);
|
|
}
|
|
response.end();
|
|
});
|
|
request.pipe(upstream);
|
|
});
|
|
|
|
server.listen(15140, '127.0.0.1');
|