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

我们有一个稍微不规则的Web服务器:它根据用户的IP地址提供用户详细信息。 用户详细信息存储在多个数据库中; 每个数据库存储有关用户子集的信息。 用户只有一个数据库中的数据。 有一个主数据库告诉你哪里可以find每个用户。

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

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

Squid可以通过它的url_rewrite_programlocation_rewrite_program参数轻松完成。

例如,像创build一个Perl脚本

 #!/usr/bin/perl -w $!=1; while (<>) { s@foo@bar@g; print; } 

并保存为/ usr / local / bin / mysquidrewriter 。 上面的脚本会将URL中的所有foo事件replace为bar 。 对于实际的SQL你当然需要修改这个脚本。 🙂

然后添加到squid.conf一行

 url_rewrite_program /usr/local/bin/mysquidrewriter 

当你重新启动Squid它启动几个mysquidrewriter进程背景和每个Squid服务的URL将通过他们按摩。 我已经做了很多次了,而且完美的工作。