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

Перезапись запроса HAProxy

Я пытаюсь настроить прокси-сервер с помощью HAProxy.

Версия: - HA-Proxy версия 1.7.5 2017/04/03

У меня есть два URL-адреса abc.com/foo и abc.com/bar, и я хочу, чтобы они перенаправлялись на мои внутренние серверы, которые обслуживают запрос как 10.0.0.1/xyz/

Например, если мои запросы поступают как abc.com/foo/login, этот запрос должен идти на мой внутренний сервер как 10.0.0.1:7003/xyz/login, но внешний интерфейс должен отображать только abc.com/foo/login .

Я пробовал использовать ниже

 "http-request redirect code 301 location http://%[hdr(host)]%[url,regsub(^/foo/,/bar/,)] if { path_beg /foo }"

но он меняет URL-адрес как abc.com/xyz

На данный момент я использую nginx, ниже представлена ​​моя конфигурация.

server {
   listen 8443;
        underscores_in_headers on;

location /Recharge {
        proxy_pass http://backend/RetailerApp;
        proxy_read_timeout 15;
}

location /Gateway {
        proxy_pass http://backend/RetailerApp;
        proxy_read_timeout 15;
}
}

upstream backend_preprod {
   server 10.5.214.237:7005;
   server 10.5.214.237:7004;
}

Вы не хотите использовать перенаправление, потому что это перенаправит клиента на данный URL. Вам нужно только переписать URL-адрес запроса.

reqrep ^([^\ :]*)\ /foo/(.*)     \1\ /xyz/\2
reqrep ^([^\ :]*)\ /bar/(.*)     \1\ /xyz/\2

https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#reqrep

Клиент по-прежнему будет видеть путь / foo или / bar, это только перезапишет его при обмене данными между прокси и внутренним сервером.