HAProxy - переписывает URL прозрачно - PullRequest
0 голосов
/ 23 мая 2019

Мне нужно реализовать действие перезаписи URL для проекта. Это необходимо сделать с помощью HAProxy-1.5, поскольку он реализован на брандмауэре PfSense, и более поздние версии на данный момент недоступны.

У меня есть следующие URL: update.domain.com repository.domain.com которые оба указывают на один и тот же внутренний сервер1. Теперь задача состоит в том, чтобы переместить корень документа: - update.domain.com >> / some / path / repo1. - repository.domian.com >> / некоторые / путь / repo2

Мало того, что корень документа перемещен, но из-за более ранней реализации с серверами TMG существуют ссылки, которые указывают на файлы как это: update.domain.com/file1.txt

Я пытался работать с http-запросом set-path и некоторыми ACL на внешнем интерфейсе, но, к сожалению, эта функция доступна в версиях> haproxy-1.6

frontend www
 bind *:80 
 acl    update_url  hdr_beg(host) -m beg update.domain.com 
 acl    update_root path_beg /some/path/repo1/
 http-request set-header /some/path/repo1/%[path] if !update_root update_url    
 use_backend testServer if update_root update_url
 default_backend testServer 

Ссылки на файлы, такие как update.domain.com/file1.txt, не могут быть изменены. Сохранение TMG не является решением. Как я могу заставить это работать с Haproxy-1.5?

1 Ответ

0 голосов
/ 24 мая 2019

Для HAProxy 1.5 вы можете использовать reqrep , который заменит строку запроса (и любые строки заголовка) тем, что вы указываете в своем регулярном выражении, например что-то вроде:

reqrep ^([^\ :]*)\ /some/path/repo1/(.*) \1\ /some/path/repo2\2

Более подробное объяснение использования reqrep можно найти здесь .

...