squid透明相關選項的說明

5.3.2squid的相關配置選項
設置squid.conf中的相關選項,如下所示:
[code]http_port 3218
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on [/code]
說明:
1.http_port 3128
在本例中,我們假設squid的HTTP監聽端口爲3128,即squid缺省設置值。然後,把所有來自於客戶端web請求的包(即目標端口爲80)重定向到3128端口。
2.httpd_accel_host virtual
httpd_accel_port 80
這兩個選項本來是用來定義squid加速模式的。在這裏我們用virtual來指定爲虛擬主機模式。80端口爲要加速的請求端口。採用這種模式時,squid就取消了緩存及ICP功能,假如你需要這些功能,這必須設置httpd_accel_with_proxy選項。
3.httpd_accel_with_proxy on
該選項在透明代理模式下是必須設置成on的。在該模式下,squid既是web請求的加速器,又是緩存代理服務器。
4.httpd_accel_uses_host_header on
在透明代理模式下,如果你想讓你代理服務器的緩存功能正確工作的話,你必須將該選項設爲on。設爲on時,squid會把存儲的對象加上主機名而不是ip地址作爲索引。這一點在你想建立代理服務器陣列時顯得尤爲重要。


1. Squid反向代理單個後臺WEB服務器

A、如果WEB服務器和反向代理服務器是兩臺單獨的機器(一般的反向代理應該有兩塊網卡分別連接了內外部網絡)。那麼,應該修改下面的內容來設置反向代理服務。

[code]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[/code]

B、如果WEB服務器和反向代理服務器是同一臺機器。那麼,應該設置WEB服務器的監聽端口爲非80端口(比如:81端口)。要修改的內容如下:



[code]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[/code]

下面解釋一下配置指令。

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的配置如下:

[code]httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_single_host off

httpd_accel_uses_host_header on[/code]

注意:編譯Squid時需激活Internal DNS選項: --disable-internal-dns





然後設置設置反響代理需要的域名解析(加入hosts)如下:


[code]
www.xxx.com 111.222.333.444

www.yyy.com 111.222.333.444

www.zzz.com 111.222.333.444[/code]

使三個域名都指向反向代理服務器的IP地址111.222.333.444。

下面設置反向代理所需要的DNS入口信息(即設置內部DNS,僅僅是squid在內部使用,Internet用戶不可見)。有兩種方法可以設置內部DNS,使用內部DNS服務器來解析或者使用/etc/hosts文件來實現。

使用內部DNS服務器的資源記錄如下:


[code]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[/code]

如果使用/etc/hosts文件來實現內部DNS(編譯時應使用disable internal dns選項),編輯/etc/hosts文件添加如下條目:

[code]192.168.0.101 www.xxx.com

192.168.0.102 www.yyy.com

192.168.0.103 www.zzz.com[/code]


在局域網通過透明代理訪問外部的web服務器時,
在web服務器端,
通過header HTTP_X_FORWARDED_FOR 可以知道代理服務器的服務器名以及端口,
通過HTTP_VIA可以知道客戶的內部ip,這會帶來一些安全問題,並且某些論壇會發現用的是代理訪問,[color=red]怎麼讓squid隱藏這些信息[/color]呢.
通過研究squid的源代碼,發現在/etc/squid/squid.conf中添加2行:
[code]header_access Via deny all
header_access X-Forwarded-For deny all[/code]就可以把它關閉


要去掉其他的header,也可以照此操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章