[轉]CentOS 6.4下SquidProxy 伺服器的安裝與配置

來源:互聯網
上載者:User

標籤:

一、簡介

Proxy 伺服器英文全稱是Proxy Server,其功能就是代理網路使用者去取得網路資訊。

Squid是一個緩衝Internet 資料的軟體,其接收使用者的下載申請,並自動處理所下載的資料。當一個使用者想要下載一個首頁時,可以向Squid 發出一個申請,要Squid 代替其進行下載,然後Squid 串連所申請網站並請求該首頁,接著把該首頁傳給使用者同時保留一個備份,當別的使用者申請同樣的頁面時,Squid 把儲存的備份立即傳給使用者,使使用者覺得速度相當快。Squid 可以代理HTTP、FTP、GOPHER、SSL和WAIS等協議並且Squid 可以自動地進行處理,可以根據自己的需要設定Squid,使之過濾掉不想要的東西。

1.1 工作流程

當Proxy 伺服器中用戶端需要的資料時:

a. 用戶端向Proxy 伺服器發送資料請求;

b. Proxy 伺服器檢查自己的資料緩衝;

c. Proxy 伺服器在緩衝中找到了使用者想要的資料,取出資料;

d. Proxy 伺服器將從緩衝中取得的資料返回給用戶端。

當Proxy 伺服器中沒有用戶端需要的資料時:

1. 用戶端向Proxy 伺服器發送資料請求;

2. Proxy 伺服器檢查自己的資料緩衝;

3. Proxy 伺服器在緩衝中沒有找到使用者想要的資料;

4. Proxy 伺服器向Internet 上的遠端伺服器發送資料請求;

5. 遠端伺服器響應,返回相應的資料;

6. Proxy 伺服器取得遠端伺服器的資料,返回給用戶端,並保留一份到自己的資料緩衝中。

SquidProxy 伺服器工作在TCP/IP的應用程式層。

1.2 Squid 分類

按照代理類型的不同,可以將Squid 代理分為正向 Proxy和反向 Proxy,正向 Proxy中,根據實現方式的不同,又可以分為普通代理和透明代理。

  • 普通代理:需要客戶機在瀏覽器中指定Proxy 伺服器的地址、連接埠;
  • 透明代理:適用於企業的網關主機(共用接入Internet)中,客戶機不需要指定Proxy 伺服器地址、連接埠等資訊,Proxy 伺服器需要設定防火牆策略將客戶機的Web訪問資料轉交給代理服務程式處理;
  • 反向 Proxy:是指以Proxy 伺服器來接受internet上的串連請求,然後將請求轉寄給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求串連的用戶端,此時Proxy 伺服器對外就表現為一個伺服器。

官方地址:http://www.squid-cache.org/

參考文檔:http://www.squid-cache.org/Doc/config/

二、系統內容

作業系統:CentOS release 6.4 (Final)

Squid版本:squid-3.1.10-20.el6_5.3.x86_64

SELINUX=disabled

HTTP Service: stoped

三、安裝Squid服務

3.1 檢查squid軟體是否安裝

# rpm -qa|grep squid

3.2 如果未安裝,則使用yum 方式安裝

# yum -y install squid

3.3 設定開機自啟動

# chkconfig --level 35 squid on             //在3、5層級上自動運行squid服務

四、squid伺服器的設定檔說明

squid 的主設定檔是 /etc/squid/squid.conf,所有squid的設定都是在這個檔案裡配置,下面我們來講解一下該檔案的配置選項。

http_port 3128      //設定監聽的IP與連接埠號碼cache_mem 64 MB      //額外提供給squid使用的記憶體,squid的記憶體總佔用為 X * 10+15+“cache_mem”,其中X為squid的cache佔用的容量(以GB為單位),
               //比如下面的cache大小是100M,即0.1GB,則記憶體總佔用為0.1*10+15+64=80M,推薦大小為實體記憶體的1/3-1/2或更多。maximum_object_size 4 MB   //設定squid磁碟緩衝最大檔案,超過4M的檔案不儲存到硬碟

minimum_object_size 0 KB   //設定squid磁碟緩衝最小檔案

maximum_object_size_in_memory 4096 KB   //設定squid記憶體緩衝最大檔案,超過4M的檔案不儲存到記憶體
cache_dir ufs /var/spool/squid 100 16 256   //定義squid的cache存放路徑 、cache目錄容量(單位M)、一級緩衝目錄數量、二級緩衝目錄數量logformat combined %&gt;a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}&gt;h" %Ss:%Sh //log檔案日誌格式access_log /var/log/squid/access.log combined  //log檔案存放路徑和日誌格式

cache_log /var/log/squid/cache.log   //設定緩衝日誌
logfile_rotate 60   //log輪循 60天cache_swap_high 95  //cache目錄使用量大於95%時,開始清理舊的cachecache_swap_low 90   //cache目錄清理到90%時停止。acl localnet src 192.168.1.0/24  //定義本地網段http_access allow localnet  //允許本地網段使用http_access deny all  //拒絕所有visible_hostname squid.david.dev  //主機名稱cache_mgr [email protected]  //管理員郵箱

關於ACL的知識,大家可以自行百度查閱,其他更多進階選項,請參考官方文檔:http://www.squid-cache.org/Doc/config/。

注意:squid2.0 和squid3.0的差別還是很大的,如果配置完,啟動squid不正確,請大家多多參考官方文檔的相應版本說明。

五、普通代理服務

即標準的、傳統的代理服務,需要客戶機在瀏覽器中指定Proxy 伺服器的地址、連接埠。

實驗拓撲圖如下:

5.1 配置Squid Proxy 伺服器IP地址

將eth1的IP地址修改為200.168.10.1

# ifconfig eth1 200.168.10.1

5.2 編輯squid 主設定檔/etc/squid/squid.conf

http_port 3128 cache_mem 64 MB maximum_object_size 4 MB cache_dir ufs /var/spool/squid 100 16 256 access_log /var/log/squid/access.log acl localnet src 192.168.1.0/24 http_access allow localnet http_access deny all visible_hostname squid.david.dev cache_mgr [email protected]

5.3 初始化

# squid –z

5.4 啟動Squid

# /etc/init.d/squid start

5.5 配置Web 服務器

A. 安裝Apache

# rpm -qa|grep httpd

# yum -y install httpd

B. 啟動Apache並加入開機啟動

# /etc/init.d/httpd start

# chkconfig httpd on

C. 建立index.html

# echo "<h1>Squid-Web1/200.168.10.2</h1>" > /var/www/html/index.html

D. 修改Web伺服器IP地址

將web伺服器的IP地址修改為200.168.10.2

# ifconfig eth0 200.168.10.2

5.6 配置用戶端IP地址

5.7 配置瀏覽器代理

開啟瀏覽器(以IE為例,其他類似),功能表列 -> 工具 -> Internet 選項 -> 串連 -> 區域網路設定 -> Proxy 伺服器,按照以下格式設定。

5.8 測試

測試成功。

5.9 測試錯誤頁面

在Oracle VM VirtualBox裡,因為上面手動設定了ip地址,導致外網不能訪問,剛好可以測試訪問出錯的頁面。

可以看到在squid 設定檔裡設定的參數在錯誤頁面裡的顯示。

六、透明代理服務

適用於企業的網關主機,客戶機不需要指定Proxy 伺服器地址、連接埠等資訊,通過iptables將客戶機的Web訪問資料轉交給代理服務程式處理。

實驗拓撲圖如下:

6.1 修改squid 主設定檔/etc/squid/squid.conf

http_port 3128 transparent cache_mem 64 MB maximum_object_size 4 MB cache_dir ufs /var/spool/squid 100 16 256 access_log /var/log/squid/access.log acl localnet src 192.168.1.0/24 http_access allow localnet http_access deny all visible_hostname squid.david.dev cache_mgr [email protected]

在http_port 3128 後添加transparent 關鍵字。

6.2 reload

reload 讓上面的配置生效。

# /etc/init.d/squid reload

6.3 添加iptables規則,把內部的http請求重新導向到3128連接埠

A. 啟動iptables 服務

# /etc/init.d/iptables start

B. 清除現有iptables filter 表規則

# iptables -F

C. 儲存iptables 設定

# /etc/init.d/iptables save

D. 查看nat 表設定

# iptables -t nat -L -n

E. 在nat表中新增一條規則

# iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

F. 儲存

G. 設定iptables 開機啟動

# chkconfig iptables on

6.4 修改用戶端IP地址

將預設閘道設定為squid 伺服器的內網ip地址。

6.5 在瀏覽器中,取消代理設定

6.6 測試

透明代理測試成功。

七、反向 Proxy服務

為Internet使用者訪問企業Web網站提供緩衝加速。

實驗拓撲圖如下:

7.1 關閉防火牆

# /etc/init.d/iptables stop

7.2 修改Web Server 首頁

Web1:

# echo "<h1>Squid-Web1/192.168.1.18</h1>" > /var/www/html/index.html

Web2:

# echo "<h1>Squid-Web1/192.168.1.19</h1>" > /var/www/html/index.html

7.3 配置squid 

http_port 80 accel vhost http_access allow all cache_peer 192.168.1.18 parent 80 0 originserver round-robin weight=1 cache_peer 192.168.1.19 parent 80 0 originserver round-robin weight=1 visible_hostname squid.david.dev cache_mgr [email protected]

7.4 啟動Squid服務

squid啟動失敗,因為上面設定了squid的監聽連接埠是80,和系統的http服務衝突,所以要將http服務停掉。

7.5 squid 啟動失敗,將系統開機自啟動的apache服務關閉。

7.6 測試

squid 採用了round-robin,所以用戶端的訪問將輪詢兩台web伺服器,採用 "Ctrl + F5" 來深度重新整理測試。

Web1:

Web2:

查看squid 的訪問日誌。

八、實際應用

下面實驗將類比通過不同的網域名稱訪問不同的機器,簡單實現公司專屬應用程式中的負載平衡。用戶端在瀏覽器地址欄中輸入www.squid.dev,將訪問192.168.1.18這台機器,訪問bbs.squid.dev,將訪問192.168.1.19這台機器。

實驗拓撲圖如下:

8.1 修改Web Server 首頁

Web1:

# echo "<h1>www.squid.dev/192.168.1.18</h1>" > /var/www/html/index.html

Web2:

# echo "<h1>bbs.squid.dev/192.168.1.19</h1>" > /var/www/html/index.html

8.2 配置Squid

http_port 80 accel vhost http_access allow all cache_peer 192.168.1.18 parent 80 0 originserver name=www cache_peer 192.168.1.19 parent 80 0 originserver name=bbs cache_peer_domain www www.squid.dev cache_peer_domain bbs bbs.squid.dev visible_hostname squid.david.dev cache_mgr [email protected]

8.3 配置用戶端

這裡可以使用DNS服務來解析,這裡我們為了方便,就在hosts 檔案裡直接指定。

修改C:\Windows\System32\drivers\etc\hosts 檔案

8.4 測試網路情況 

8.5 測試www.squid.dev

8.6 測試bbs.squid.dev

8.7 查看squid 訪問日誌

8.8 查看兩台伺服器的apache 訪問日誌

# tailf /var/log/httpd/access.log

測試成功。

轉自:http://www.cnblogs.com/mchina/p/3812190.html

[轉]CentOS 6.4下SquidProxy 伺服器的安裝與配置

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.