我们有一个稍微不规则的Web服务器:它根据用户的IP地址提供用户详细信息。 用户详细信息存储在多个数据库中; 每个数据库存储有关用户子集的信息。 用户只有一个数据库中的数据。 有一个主数据库告诉你哪里可以find每个用户。
由于外部因素,Web服务器必须由每个数据库的专用机器来replace。 设置一个在服务器之间拆分请求的反向代理很容易。 但是,决定将哪个服务器转发请求取决于主数据库中的条目。
是否有一个反向代理服务器,允许脚本来决定哪个后端服务器来处理特定的请求?
Squid可以通过它的url_rewrite_program
和location_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将通过他们按摩。 我已经做了很多次了,而且完美的工作。