Reverse proxy: как запустить несколько сайтов на одном сервере
Опубликовано by Pavel Nakonechnyy on (изменено: ) в Web development.Как в два файла Node.js сделать простейший reverse proxy, который будет слушать 80 порт и перенаправлять трафик на нужный вам http-сервер другого порта в зависимости от домена.
Index.ts:
import * as express from "express";
import httpProxy = require("http-proxy");
const app = express();
const port = 80;
const proxy = httpProxy.createProxyServer({});
app.use((req, res, next) =>
{
console.log(req.method + " " + req.headers.host + req.url);
next();
});
// tslint:disable-next-line: no-var-requires
const config = require("../config.json") as any;
app.use((req, res) =>
{
for (const domain in config) {
if (!config.hasOwnProperty(domain)) {
continue;
}
if (req.headers.host === domain) {
try {
proxy.web(req, res, {
target: config[domain]
});
}
catch (e) {
console.error(e);
}
return;
}
}
res.header(404).send("NO SUCH SITE");
});
Config.json:
{
"sneakbug8.ru": "http://127.0.0.1:1010",
"finance.sneakbug8.ru": "http://localhost:1020"
}
app.listen(port, () => console.log(`Reverse proxy listening on port ${port}!`));
359