如何使用 LAMP 堆栈转发通过特定标头或特定 IP 地址收到的请求

如何使用 LAMP 堆栈转发通过特定标头或特定 IP 地址收到的请求

我们有一个 Symfony2 应用程序正在大力开发中,并且刚刚签署了我们的第一个生产客户。

我们希望暂时将此客户端放在另一个稳定的集群上,同时继续在当前集群上进行大量开发。但我们希望整个情况对客户端不可见。

因此,我想使用他们的特定请求标头授权(首选)或他们的 IP 地址(如果标头不可行)有选择地将来自该客户端机器的请求从我们的主要 www 网络服务器转发到我们稳定集群的网络服务器。

我正在研究 mod_proxy,这是实现此目的的最佳工具吗?还有其他吗?如有必要,我可以在应用程序中执行此操作,但这会给每个请求增加一些不必要的开销。我们在 AWS 上进行设置,看看它是否提供了我不知道的任何其他工具。

非常感谢!

答案1

由于您想有选择地进行转发,因此您需要 mod_proxy 和 mod_rewrite,因为 mod_proxy 本身只能通过 URL 上下文进行代理

您可以基于远程 IP 进行代理:

RewriteCond %{REMOTE_ADDR} ^12.34.56.78$
RewriteRule ^(.*)$  http://cluster/$1  [P]

或基于登录(假设基本身份验证):

RewriteCond %{REMOTE_USER} ^username$
RewriteRule ^(.*)$  http://cluster/$1  [P]

%{HTTP:header_name}如果是自定义标头,还存在以下情况:

RewriteCond %{HTTP:my_custom_header_name} ^my_custom_header_value$
RewriteRule ^(.*)$  http://cluster/$1  [P]

相关内容