歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Squid實現反向代理

Squid實現反向代理

日期:2017/3/1 17:01:52   编辑:關於Linux
Squid實現反向代理 反向代理工作原理 當用戶浏覽器發出一個HTTP請求時,通過域名解析將請求定向到反向代理服務器(如果要實現多個WEB服務器的反向代理,需要將多個WEB服 務器的 域名都指向反向代理服務器)。由反向代理服務器處理器請求。反向代理一般只緩存可緩沖的數據(比如html網頁和圖片等),而一些CGI腳本程序或者 ASP之類的程序不緩存。它根據從WEB服務器返回的HTTP頭標記來緩沖靜態頁面。 www.2cto.com 使用Squid配置反向代理(HTTP 加速器) 通過squid配置反向代理主要就是配置“squid.conf”這個配置文件。下面以Linux操作系統為例進行介紹,其它版本的在UNIX也同 樣適用。在Linux中squid如果是以源代碼方式安裝的話,這個文件一般在“/usr/local/squid/etc/”目錄下。如果是系統自帶的 squid,一般配置文件在“/etc/squid/”目錄下。 www.2cto.com 1. Squid反向代理單個後台WEB服務器 如果WEB服務器和反向代理服務器是兩台單獨的機器(一般的反向代理應該有兩塊網卡分別連接了內外部網絡)。那麼,應該修改下面的內容來設置反向代理服務。 http_port 80 # squid監聽的端口 httpd_accel_host 172.16.250.250 # 內部WEB服務器的IP地址 httpd_accel_port 80 # WEB服務器的IP地址 httpd_accel_single_host on # 轉發為緩沖的請求到一台單獨的機器 httpd_accel_with_proxy on # httpd_accel_uses_host_header off 如果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 下面解釋一下配置指令。 www.2cto.com http_port 80 選項 http_port 指定squid監聽HTTP請求的端口,一般都設置成80端口,這樣使用戶感覺不到反向代理的存在,就像訪問真正的WEB服務器一樣。 httpd_accel_host 172.16.250.250 和 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.abc.com, www.xyz.com, www.kutea.net三個後台WEB服務器。 Squid的配置如下: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_single_host off httpd_accel_uses_host_header on (注意:編譯Squid時需激活Internal DNS選項) 然後設置設置反響代理需要的域名解析(Internet用戶通過這裡解析三個網站的域名)如下: www.2cto.com www.abc.com 202.102.240.74 www.xyz.com 202.102.240.74 www.kutea.net 202.102.240.74 使三個域名都指向反向代理服務器的IP地址202.102.240.74。 下面設置反向代理所需要的DNS入口信息(即設置內部DNS,僅僅是squid在內部使用,Internet用戶不可見)。有兩種方法可以設置內部DNS,使用內部DNS服務器來解析或者使用/etc/hosts文件來實現。 使用內部DNS服務器的資源記錄如下: www.abc.com IN A 172.16.1.2 www.xyz.com IN A 172.16.1.3 www.kutea.net IN A 172.16.1.4 如果使用/etc/hosts文件來實現內部DNS(編譯時應使用disable internal dns選項),編輯/etc/hosts文件添加如下條目: 172.16.1.2 www.abc.com 172.16.1.3 www.xyz.com 172.16.1.4 www.kutea.net
Copyright © Linux教程網 All Rights Reserved