![使用数据库信息的反向代理 HTTP 请求](https://linux22.com/image/523099/%E4%BD%BF%E7%94%A8%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BF%A1%E6%81%AF%E7%9A%84%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%20HTTP%20%E8%AF%B7%E6%B1%82.png)
我们有一个稍微不规则的 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 都会通过它们进行处理。我已经这样做过很多次了,效果非常好。