Я пытаюсь настроить прокси-сервер с помощью 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, это только перезапишет его при обмене данными между прокси и внутренним сервером.