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

Apache mod_proxy: перенаправление на основе заголовка http?

Мне было интересно, можно ли направить HTTP-трафик на конкретный внутренний сервер на основе значения заголовка HTTP-запроса. Например, значение http-заголовка referer.

У меня 2 экземпляра сервера. Один для UAT (тесты) и один для опытного использования. Я хотел бы иметь обратный прокси-сервер Apache перед этими двумя экземплярами сервера. И когда приходит http-запрос, на основе значения http-заголовка referer (uat или pre-prod) я хотел бы, чтобы мой обратный прокси направил запрос на правильный экземпляр внутреннего сервера.

Это возможно?

Спасибо

Да, это возможно.

Создайте правило перезаписи на основе условной проверки заголовка REFERER.

Документация RewriteCond

% {HTTP: header}, где заголовок может быть любым именем HTTP-заголовка MIME, всегда можно использовать для получения значения заголовка, отправленного в HTTP-запросе. Пример:% {HTTP: Proxy-Connection} - это значение HTTP-заголовка «Proxy-Connection:».

RewriteCond %{HTTP:Referer} =="xyz.com/abcd"
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Для большей точности может потребоваться дополнительная информация (например, более точные примеры), но здесь есть над чем поработать.

RewriteCond %{HTTP:Referer} webapp-uat
RewriteRule (.*) http:/uat-backend/$1 [P,L]

RewriteCond %{HTTP:Referer} webapp-qa
RewriteRule (.*) http:/qa-backend/$1 [P,L]

Я надеюсь, что этого достаточно, чтобы начать работу.