Назад | Перейти на главную страницу

Удаление параметров из URL-адреса haproxy 1.5 при подключении к бэкэнду - Использование reqrep для удаления параметров URL-адреса

У меня есть служба, работающая на порту 10000, на который должен выходить haproxy. Я меняю URL-адреса, но структура выглядит так:

localhost:10000/testbutton/?test=test

Однако у нас есть аналогичные сервисы на других портах с такой же настройкой:

localhost:10001/testbutton

Таким образом, мы настраиваем HAProxy ACL для соответствия определенным параметрам пути и отправляем его в определение серверной части, а также удаляем из него любые лишние параметры.

frontend test

maxconn 2000
  bind 0.0.0.0:9000

  acl testbutton path_reg -i /automated/usa/newyork/testbutton/.*
  use_backend testbutton-server if testbutton


backend testbutton-server
  #reqrep ^(.+)\ /+[^/]+(/+.*)?$  \1\ \2
  #reqrep ^(.+newyork)\ /+[^/]+(/testbutton)   \1\ \2
  server localhost 10.136.93.186:10000 maxconn 100

Итак, вы ожидаете, что localhost: 9000 / automatic / usa / newyork / testbutton / test = test перейдет на бэкэнд, уберет все перед testbutton и использует localhost: 10000 / testbutton / test = test.

Проблема в том, что мне очень трудно использовать reqrep для сопоставления и удаления параметров перед testbutton. Кто-нибудь может мне с этим помочь? Кроме того, есть ли онлайн-инструмент, который я могу использовать для тестирования reqrep? Я протестировал второе правило с помощью rubular, но когда я запускаю свое приложение, оно сообщает об ошибке 404 для локального хоста: 9000 / automatic / usa / newyork / testbutton / test = test endpoint.

РЕДАКТИРОВАТЬ: сейчас я пробую следующее регулярное выражение:

reqrep ^(/[A-Za-b].+)/testbutton /+[^/]+(/testbutton+.*)?$ \1\ \2

И получаю следующую ошибку:

'reqrep' : Expecting nothing, 'if', or 'unless', got '\1 \2'.

Кто-нибудь может мне сказать, что это значит? Мой поиск в Google дал только один результат:

https://stackoverflow.com/questions/39613959/haproxy-with-url-prefix

EDIT2: сейчас пытаюсь ^([^\ :]*)\ /automated/usa/newyork/(.*) \1\ /\2 без результатов. Может ли кто-нибудь указать мне на исчерпывающую документацию по синтаксису reqrep? Документация на сайте haproxy не особо полезна.