Я пытаюсь заставить работать http-proxy-middleware. Я пытаюсь запустить несколько приложений nodejs, а затем прокси-приложение в качестве обратного прокси-сервера.
Проблема, с которой я сталкиваюсь:когда я нажимаю ссылку в прокси-приложении, вот мой код:
var express = require('express')
var proxy = require('http-proxy-middleware')
var app = express()
var options = {
target: 'http://localhost:1001', // target host
changeOrigin: true, // needed for virtual hosted sites
ws: false, // proxy websockets
logLevel: "debug",
pathRewrite: {
'^/foo': '/', // rewrite path
}
}
var exampleProxy = proxy(options)
app.use('/foo', exampleProxy)
app.listen(3000)
В приложении localhost: 1001 я получил маршруты '/' и '/ bar'
app.get('/', function (req, res) {
res.render('home');
});
app.get('/bar', function (req, res) {
res.render('bar');
});
Если я перейду к localhost: 3000 / foo, он перенаправит меня на localhost: 1001 / (показывая localhost: 3000 / в браузере) и то же самое с localhost: 3000 / foo / bar.Так что это работает нормально.
Проблема возникает, когда я захожу на localhost: 3000 / foo и затем нажимаю ссылку на 'bar', затем он направляет меня на localhost: 3000 / bar, который не является маршрутом Iопределил в моем прокси-сервере.
Итак, мне нужно, чтобы при нажатии на ссылку на / bar он направлял ее к / foo / bar в прокси.
Я пыталсяпридумали несколько способов исправить это, но (очевидно) не увенчались успехом:
Добавьте порт (1001) в ответ (res.locals.portNo = "1001") и затем отправьте его взапрос, чтобы прокси мог проверить, откуда поступил запрос, и добавить / foo (если его 1001).(Я еще не пробовал, но, может быть, этого можно достичь с помощью файлов cookie?)