Мне было интересно, можно ли направить HTTP-трафик на конкретный внутренний сервер на основе значения заголовка HTTP-запроса. Например, значение http-заголовка referer.
У меня 2 экземпляра сервера. Один для UAT (тесты) и один для опытного использования. Я хотел бы иметь обратный прокси-сервер Apache перед этими двумя экземплярами сервера. И когда приходит http-запрос, на основе значения http-заголовка referer (uat или pre-prod) я хотел бы, чтобы мой обратный прокси направил запрос на правильный экземпляр внутреннего сервера.
Это возможно?
Спасибо
Да, это возможно.
Создайте правило перезаписи на основе условной проверки заголовка REFERER.
% {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]
Я надеюсь, что этого достаточно, чтобы начать работу.