HAProxy как разделить бекенды в зависимости от пути
Есть набросок такой конфигурации для HAProxy:
defaults
log global
mode http
timeout connect 5000
timeout client 5000
timeout server 5000
frontend main
bind *:80
acl is_redmine path_beg /redmine
use_backend redmine_back if is_redmine
backend redmine_back
server redmine_server redmine:3000
Как мне переадресовать запросы на redmine (это контейнер) и получать ответы с таким путем "some_adress/redmine/login"?
Сейчас на redmine кидает запросы вместе со словом "redmine". Пример логов для понимания, у redmine нет обработки 0.0.0.0:3000/redmine:
redmine_1 | [2021-06-11 18:35:05] INFO WEBrick 1.6.1
redmine_1 | [2021-06-11 18:35:05] INFO ruby 2.7.3 (2021-04-05) [x86_64-linux]
redmine_1 | [2021-06-11 18:35:05] INFO WEBrick::HTTPServer#start: pid=1 port=3000
redmine_1 | 172.18.0.4 - - [11/Jun/2021:18:35:11 UTC] "GET /redmine HTTP/1.1" 404 459
redmine_1 | - -> /redmine
Я хочу что бы к нему пришел запрос без редмайна.
Есть у кого пример конфигурации рабочей или куда читать?
Заранее спасибо.
Update 1
Такое решение помогло, но создало новую проблему:
http-request set-path "%[path,regsub(^/redmine,/,i)]"
После ответа, страница пытается подгрузить статичный контент, но без пути redmine, т.е. http://some_addres/stylesheets/jquery/jquery-ui-1.12.1.css?1619448608,
а хотелось бы http://some_addres/redmine/stylesheets/jquery/jquery-ui-1.12.1.css?1619448608
Update 2
Я дошел до переадресаций и это работало, но баговало, конечно. Вот пример конфигурации, мб кому именно так нужно будет делать, НО не рекомендую:
frontend main
bind *:80
acl is_redmine path_beg -i /redmine
acl is_redmine_referer hdr(Referer) -i -m sub /redmine
http-request redirect location http://%[req.hdr(host)]/redmine%[path]?%[query] if !is_redmine is_redmine_referer
use_backend redmine_back if is_redmine
use_backend redmine_back if is_redmine_referer
backend redmine_back
http-request set-path "%[path,regsub(^/redmine,/,i)]"
server redmine_server redmine:3000
Ответы (1 шт):
Решил проблему ГОРАЗДО проще, создал несколько сабдоменов наподобие redmine.somename.ru и, предположим, wiki.somename.ru.
Настроил переадресацию отталкиваясь от хоста, работает как часы.
Пример конфигурации:
frontend main
bind *:80
acl is_redmine hdr(Host) -i -m sub redmine.
use_backend redmine_back if is_redmine
backend redmine_back
server redmine_server redmine:3000