У меня есть два экземпляра одного и того же приложения узла, работающего на порту 3000
и 4000
.
Я хотел бы иметь следующее поведение:
https://localhost/dev ==> http://localhost:3000
https://localhost/prod ==> http:// localhost:4000
У меня есть следующий прокси:
var fs = require('fs'),
httpProxy = require('http-proxy');
var PATH_TO_KEY = "/home/wow/browser.key",
PATH_TO_CERT = "/home/wow/browser.crt",
PATH_TO_CHAIN = "";
var options = {
ssl: {
key: fs.readFileSync(PATH_TO_KEY, 'utf8'),
cert: fs.readFileSync(PATH_TO_CERT, 'utf8'),
//ca : fs.readFileSync(PATH_TO_CHAIN, 'utf8')
},
target: "http://localhost:4000", // this is prod
ws: true,
xfwd: true,
router: {
'https://localhost/dev': 'http://127.0.0.1:3000/',
'https://localhost/prod': 'http://127.0.0.1:4000/',
},
pathRewrite: {
'^/dev' : '/', // remove /dev/ path
'^/prod' : '/' // remove /prod/ path
},
};
var server = httpProxy.createProxyServer(options).listen(443);
Однако, когда я посещаю https://localhost/dev
или https://localhost/prod
, происходит следующее:
- Он всегда перенаправляет на указанный
target
, а не на любой из URL, указанных в router
.
- Кажется, что pathRewrite не происходит, поскольку I всегда заканчивается на
target/prod
или target/dev
. Путь для / dev и / prod не существует, и, следовательно, я получаю страницу не может отображаться ошибка.
Я не уверен, куда я иду не так с этим. Может ли кто-нибудь помочь?
Спасибо.