Обработка перенаправлений в Express для поддержки обратного прокси-сервера nginx - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть экспресс-приложение, которое отлично работает в моей локальной среде на порту 3001. Мне нужно развернуть его на производственном сервере, на котором nginx прослушивает порт 80. Ниже приведены некоторые из экспресс-маршрутов

router.get('/', (req, res) => {
    //home page, show login page
});


router.post('/login', (req, res) => {
    if(errors){
        //invalid credentials
        return res.redirect('..');
    }

    //successful login, redirect to admin area
    return res.redirect('../admin');
})

и аналогичные маршруты для аутентифицированных пользователей-администраторов.Маршруты не работают должным образом при развертывании на nginx с использованием обратного прокси.Параметры обратного прокси-сервера nginx следующие:

location /v2manager/ {
                proxy_set_header        Host    $host;
                proxy_pass  http://127.0.0.1:3001/;
        }

Я хочу, чтобы приложение было доступно по маршруту v2manager в моем рабочем домене, например example.com/v2manager.Таким образом, все маршруты становятся следующими:

  1. example.com/v2manager/ для домашней страницы
  2. example.com/v2manager/login для POST-маршрута входа в систему и
  3. example.com/v2manager/admin для администратораarea

Однако, перенаправления не работают должным образом, при неудачном входе в систему return res.redirect('..') перенаправляет меня на example.com, который имеет другую страницу, тогда как он должен перенаправить на example.com/v2manager

Я могу изменить маршруты своего приложения, добавив v2manager везде, но маршрут v2manager может часто меняться в зависимости от среды и версий.Кроме того, решение, которое не будет препятствовать локальной среде, чтобы localhost:3000/login работало всегда

1 Ответ

0 голосов
/ 30 сентября 2018

Вам нужно установить перенаправление прокси:

location /v2manager/ {
  proxy_set_header Host $host;
  proxy_redirect ~/(.*)$ /v2manager/$1;
  proxy_pass http://127.0.0.1:3001/;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...