A、如果WEB服務器和反向代理服務器是兩台單獨的機器(一般的反向代理應該有兩塊網卡分別連接了內外部網絡)。那麼,應該修改下面的內容來設置反向代理服務。
http_port 80 # squid監聽的端口
httpd_accel_host 192.168.0.100 # 內部WEB服務器的IP地址
httpd_accel_port 80 # WEB服務器的IP地址
httpd_accel_single_host on # 轉發為緩沖的請求到一台單獨的機器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
B、如果WEB服務器和反向代理服務器是同一台機器。那麼,應該設置WEB服務器的監聽端口為非80端口(比如:81端口)。要修改的內容如下:
http_port 80 # squid監聽的端口
httpd_accel_host localhost # 內部WEB服務器的IP地址
httpd_accel_port 81 # WEB服務器的IP地址
httpd_accel_single_host on # 轉發為緩沖的請求到一台單獨的機器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
下面解釋一下配置指令:
http_port 80
選項 http_port 指定squid監聽HTTP請求的端口,一般都設置成80端口,這樣使用戶感覺不到反向代理的存在,就像訪問真正的WEB服務器一樣。
httpd_accel_host 192.168.0.100 和 httpd_accel_port 80
選項httpd_accel_host 和 httpd_accel_port 指定WEB服務器的IP地址和端口號,可以根據自己的WEB服務器的實際情況而定。
httpd_accel_single_host on
選項httpd_accel_single_host 為on 時,squid被設置成僅對單一的web服務器作反向代理。不考慮HTTP頭信息,Squid轉發所有的為被緩沖的頁面請求到這個web服務器。如果squid需要做多個web服務器反向代理,必須將此選項設置為off,並且使用轉向器或者DNS去映射請求到合適的後台WEB服務器。
httpd_accel_with_proxy on
如果希望squid既作反向代理服務器又作本地機器的上網代理,需要將httpd_accel_with_proxy 改為 on,默認情況下是off
httpd_accel_uses_host_header off
在HTTP協議1.1中,HTTP請求包括一個主機頭信息,指定URL的主機名或者主機的IP地址。這個選項可以用來完成多個後台WEB服務器的反向代理功能。
2. Squid反向代理多個後台WEB服務器
我們可以用Squid反向代理多個後台WEB服務器。例如:我們可以配置squid同時反向代理www.xxx.com www.yyy.com www.zzz.com 三個後台WEB服務器。
Squid的配置如下:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_uses_host_header on
注意:編譯Squid時需激活Internal DNS選項
--disable-internal-dns
一個比較全的編譯配置如下:
./configure --prefix=/usr/local/squid --enable-dlmalloc --with-pthreads --enable-poll --disable-internal-dns --enable-stacktrace --enable-removal-policies="heap,lru" --enable-delay-pools --enable-storeio="aufs,coss,diskd,ufs"
然後設置設置反響代理需要的域名解析(加入hosts)如下:
www.xxx.com 111.222.333.444
www.yyy.com 111.222.333.444
www.zzz.com 111.222.333.444
使三個域名都指向反向代理服務器的IP地址111.222.333.444。
下面設置反向代理所需要的DNS入口信息(即設置內部DNS,僅僅是squid在內部使用,Internet用戶不可見)。有兩種方法可以設置內部DNS,使用內部DNS服務器來解析或者使用/etc/hosts文件來實現。
使用內部DNS服務器的資源記錄如下:
www.xxx.com IN A 192.168.0.101
www.yyy.com IN A 192.168.0.102
www.zzz.com IN A 192.168.0.103
如果使用/etc/hosts文件來實現內部DNS(編譯時應使用disable internal dns選項),編輯/etc/hosts文件添加如下條目:
192.168.0.101 www.xxx.com
192.168.0.102 www.yyy.com
192.168.0.103 www.zzz.com