Задать вопрос
@Qwertynchik
Сисадмин linux

Haproxy redirect?

Всем доброго дня. Нужна небольшая помощь с балансером haproxy. В линухе пока новичок, по своей проблеме перепробовал все способы из инета, но ни чего не работает.
Задача следующая:
есть докер с приложухой по адресу скажем test.test2.ru, нужно сделать так, чтобы при переходе на эту страницу шел редирект на адрес test.test2.ru/user/login (тобиш ввожу это test.test2, а получаю это test.test2/user/login), прилагаю кусок с фронтендом из haproxy.cfg. Подскажите где косяк. Пробовал другим способ, последние две строки закоментчены. Не работает никак. 172.27.16.225 это ip самого балансера.

frontend main *:80
mode tcp
option tcplog
log global
default_backend test
timeout client 3m
timeout server 3m
acl test.test2.ru hdr_beg(host) -i test.test2.ru
acl 172.27.16.225 hdr_beg(host) -i 172.27.16.225
redirect prefix test.test2.ru code 301 if { hdr_beg(host) -i test.test2.ru/user/login }

# redirect code 301 location test.test2.ru/user/login if test.test2.ru
# redirect code 301 location test.test2.ru/user/login if 172.27.16.225
  • Вопрос задан
  • 584 просмотра
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Первое как уже подметили - это mode http
Второе - все обращения к test.test2.ru/bla-bla будут соответствовать условию hdr_beg(host) -i test.test2.ru
Ибо это звучит как "хост в заголовке начинается с ..."
Соответственно как минимум стоит оперировать с вариациями path*

например совсем грубо:
redirect code 301 localtion  test.test2.ru/user/login  if { path / } # тогда и только тогда когда путь в uri будет /


или чуть поизвращённей (если вдруг в path test.test2.ru не окажется ведущего /):
redirect code 301 localtion  test.test2.ru/user/login  if {  path_len 0-1  } # *

_________________
* - судя по мануалу "Returns true when the path length matches the values or ranges specified." но как именно задать range "0-1" или "0 1" или "0,1" подсказать затрудняюсь
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы