Вы можете использовать реагирующий сервер для пересылки вашего запроса на сервер? - PullRequest
0 голосов
/ 17 апреля 2019

Я работаю над инструментом, в котором веб-интерфейс создается с реакцией js (create-реагировать-приложение и обслуживается с serve ), а бэкэнд выполняется с узлом express +, и оба сервера работают на разныхКонтейнер Docker на удаленной машине.Теперь проблема в том, что системный администратор говорит, что он сделает доступным только внешний интерфейс из внешнего мира, а внутренний контейнер доступен только для внешнего интерфейса.Поскольку я выполняю вызовы XMLHttpRequest в / API / example, а бэкэнд не имеет общедоступного URL-адреса, поэтому могу ли я использовать внешний сервер для перенаправления своего запроса на бэкэнд?

Чтобы я сам себя понял, это то, что я хочу сделать, веб-интерфейс работает на https://frontend.com, и я выполняю API / пример вызова из браузера на https://frontend.com/API/example, и сервер перенаправляет этот вызов на сервер и отвечает обратнос ответом.

1 Ответ

2 голосов
/ 20 апреля 2019

Вы должны использовать какой-то веб-сервер вместо serve npm package.Проблема в вашем случае заключается в том, что вы хотите проксировать все запросы к серверу и обслуживать пакет только статическим сервером.Самый простой способ для вас - написать собственный скрипт js для узла, обслуживать статические ресурсы (например, с express ) и проксировать все запросы к бэкэнду.(например, с express-http-proxy ).

Пример кода будет выглядеть следующим образом:

const proxy = require('express-http-proxy');
const app = require('express')();  
app.use('/api', proxy('http://backend.url')); // this will proxy all incoming requests to /api route to backend base url
app.use(express.static(‘path/to/your/static/assets’)); // these were previously served with serve
app.listen(3000, () => console.log(‘Frontend listening on port: 3000’));

Другой возможный способ - использовать nginx, apache или любой другойвеб-сервер, который вы хотели бы сделать и делаете по сути то же самое.

...