反向代理服务器允许您根据请求 URI 明确定义映射吗?

反向代理服务器允许您根据请求 URI 明确定义映射吗?

我正在寻找一个反向代理解决方案:

a) 让我根据正则表达式明确定义哪些请求发送到哪些服务器(或其他类似方式定义某些 URL 模式映射到某些后端服务器)

或者

b) 支持某种类型的代理哈希算法,以便对给定 URL 的请求始终映射到一个特定的服务器,发布该算法,以便我可以在我的应用程序中使用它来确定给定的 URL 将映射到哪个服务器。

有类似的东西吗?还是我必须自己写一个……?

答案1

就具有代理功能的全功能 Web 服务器而言,Apache 和 nginx 都能够满足选项 a。

在 Apache 中,您可能想要使用 mod_rewrite 的代理功能:

RewriteRule /(location[1-5]*\.html)$ http://sourceserver.example.com/$1 [P]

在 nginx 中,你只需要使用正则表达式来指定你的 location 指令 - 参见这里

对于选项 B,大多数实施哈希选项的代理使用相反的方法;确保来自给定客户端的所有请求都发送到同一服务器以维护会话状态。您能否更详细地说明为什么这是可取的?

答案2

非常确定你也可以用 haproxy 来做到这一点,请参阅http://code.google.com/p/haproxy-docs/wiki/MatchingLayer7

先前的 serverfault 问题:使用 haproxy 选择服务器后端到某个 URL有一个例子。

我不知道这是否合理。可能没有查看其他答案和 haproxy 文档中的警告。

相关内容