我想知道是否可以根据 http 请求标头值将 http 流量定向到特定的后端服务器。例如“referer”http 标头值。
我有 2 个服务器实例。一个用于 UAT(测试),一个用于预生产。我希望在这两个服务器实例前面有一个 Apache 反向代理。当一个 http 请求到来时,我希望我的反向代理根据“referer”http 标头(uat 或 pre-prod)值将请求定向到正确的后端服务器实例。
这可能吗?
谢谢
答案1
对的,这是可能的。
根据 REFERER 标头的条件检查制定重写规则。
%{HTTP:header},其中 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]
答案2
可能需要更多信息(即更精确的例子)才能更加准确,但这里有一些可以利用的东西。
RewriteCond %{HTTP:Referer} webapp-uat
RewriteRule (.*) http:/uat-backend/$1 [P,L]
RewriteCond %{HTTP:Referer} webapp-qa
RewriteRule (.*) http:/qa-backend/$1 [P,L]
我希望这能给你提供足够的帮助。