Haproxy - 301/302 перенаправить URL1 на URL2 со всеми путями - PullRequest
0 голосов
/ 19 марта 2020

Я немного потерян. Я пытаюсь реализовать перенаправление в сложной конфигурации HAproxy. Цель проста:

  • пользователь использует поддомен -> 123.domain.com
  • пользователь будет указан на api.domain.com, но думает, что он все еще на 123.domain. com
  • пользователь должен иметь возможность использовать такие патчи, как 123.domain.com/123?123, но при этом получать результаты от api.domain.com/123?123, но думает, что он получает результат от 123.domain.com/ 123? 123.

Я совершенно не уверен, как реализовать это, не принимая во внимание сокращение производственных затрат c.

Что бы я сделал:

  • создание правила ACL в интерфейсе SSL для указания на бэкэнд API при использовании 123.domain.de.

префикс перенаправления http://123.domain.com код 301 if {hdr (host) -i api.domain.com}

Не использовать, если это будет работать.

  • создание правила перенаправления, указывающего просто на другой URL-адрес API:

местоположение перенаправления https://www.mysites/v2/pages 302 if {hdr (host) -i api.domain .com}

Трудно реализовать это без риска сбоя. Есть ли что-то, кто мог бы знать ответ?

1 Ответ

0 голосов
/ 19 марта 2020

Сначала я бы порекомендовал, чтобы у вас была настроенная и / или промежуточная среда для тестирования любых изменений перед их внесением.

Для перенаправления 301 всех траффиков c, поступающих с 123.domain. com на api.domain.com вы можете использовать следующее

http-request redirect prefix http://api.domain.com code 301 if { hdr(host) -i 123.domain.com }

Если вы хотите, чтобы HAProxy подключался к бэкенду api.domain.com от имени пользователя и маскировал имя хоста, вы бы добавили бэкэнд для api.domain.com, а затем создайте правило use_backend. Имейте в виду, что с помощью нижеприведенного перенаправления 301/302 не выполняются, вместо этого HAProxy устанавливает соединение от имени клиента.

Примерно так будет работать:

use_backend api.domain.com if { hdr(host) -i 123.domain.com }

Тогда в пределах На сервере api.domain.com вы можете обновить заголовок хоста.

backend api.domain.com
    http-request set-header Host api.domain.com
    server api1 api.domain.com:80 check
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...