Files
core2026/app/gateway-frontend/e2e/prefix-proxy.mjs
T

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');