Proxy
使用數據庫資訊反向代理 HTTP 請求
我們有一個稍微不規則的網路伺服器:它根據使用者的 IP 地址提供使用者詳細資訊。使用者詳細資訊儲存在多個數據庫中;每個數據庫都儲存有關使用者子集的資訊。使用者只有一個數據庫中的數據。有一個主數據庫可以告訴您在哪裡可以找到每個使用者。
由於外部因素,Web 伺服器必須由每個數據庫的專用機器替換。設置在伺服器之間拆分請求的反向代理很容易。但是,將請求轉發到哪個伺服器的決定取決於主數據庫中的條目。
是否有一個反向代理伺服器允許腳本決定哪個後端伺服器可以處理特定請求?
Squid
url_rewrite_program
可以通過它的和location_rewrite_program
參數輕鬆地做到這一點。例如,創建一個 Perl 腳本,如
#!/usr/bin/perl -w $!=1; while (<>) { s@foo@bar@g; print; }
並將其保存為*/usr/local/bin/mysquidrewriter*。上面的腳本會將URL 中出現的所有foo替換為**bar。對於實際的 SQL 內容,您當然需要修改此腳本。:-)
然後在 squid.conf 中添加一行
url_rewrite_program /usr/local/bin/mysquidrewriter
當您重新啟動 Squid 時,它會啟動幾個 mysquidrewriter 程序後台,並且 Squid 必須服務的每個 URL 都將通過它們進行按摩。我已經這樣做了很多次,而且效果很好。