使用数据库信息的反向代理 HTTP 请求

使用数据库信息的反向代理 HTTP 请求

我们有一个稍微不规则的 Web 服务器:它根据用户的 IP 地址提供用户详细信息。用户详细信息存储在多个数据库中;每个数据库都存储有关用户子集的信息。用户数据只存储在一个数据库中。有一个主数据库,它会告诉您每个用户的位置。

由于外部因素,Web 服务器必须由每个数据库的专用机器代替。设置一个反向代理来在服务器之间拆分请求是很容易的。但是,将请求转发到哪个服务器的决定取决于主数据库中的条目。

是否存在一个反向代理服务器,允许脚本决定哪个后端服务器来处理特定的请求?

答案1

乌贼url_rewrite_program可以使用其和参数轻松做到这一点location_rewrite_program

例如,创建一个 Perl 脚本,如下所示

#!/usr/bin/perl -w

$!=1;
while (<>) {
     s@foo@bar@g;
     print;
}

并将其保存为在/usr/local/bin/mysquidrewriter. 上述脚本将替换所有URL 中的出现次数酒吧。对于实际的 SQL 内容,您当然需要修改此脚本。:-)

然后在 squid.conf 中添加如下行

url_rewrite_program /usr/local/bin/mysquidrewriter

重新启动 Squid 时,它会在后台启动几个 mysquidrewriter 进程,Squid 需要服务的每个 URL 都会通过它们进行处理。我已经这样做过很多次了,效果非常好。

相关内容