轉-squid介紹及其簡單配置

本文原始出處:http://linuxme.blog.51cto.com/1850814/372960html

1Squid是什麼?linux

  Squid中文權威指南:http://zyan.cc/book/squid/web

  Squid是一種用來緩衝Internet數據的軟件。它是這樣實現其功能的,接受來自人vim

們須要下載的目標(object)的請求並適當地處理這些請求。也就是說,若是一我的想瀏覽器

下載一web頁面,他請求Squid爲他取得這個頁面。Squid隨之鏈接到遠程服務器(好比緩存

http//squid.nlanr.net/)並向這個頁面發出請求。而後,Squid顯式地彙集數據服務器

到客戶端機器,並且同時複製一份。當下一次有人須要同一頁面時,Squid能夠簡單地網絡

從磁盤中讀到它,那樣數據迅即就會傳輸到客戶機上。當前的Squid能夠處理HTTPFTdom

PGOPHERSSLWAIS等協議。但它不能處理如POPNNTPRealAudio以及其它類型的東西。tcp

2.squid代理的做用:

 

3 接下來咱們主要探討的是squid各類代理的定義

正向代理

a  標準的代理緩衝服務器

  一個標準的代理緩衝服務被用於緩存靜態的網頁(例如:html文件和圖片文件等)到本地網絡上的一臺主機上(即代理服務器)。當被緩存的頁面被第二次訪問的時候,瀏覽器將直接從本地代理服務器那裏獲取請求數據而再也不向原web站點請求數據。這樣就節省了寶貴的網絡帶寬,並且提升了訪問速度。可是,要想實現這種方式,必須在每個內部主機的瀏覽器上明確指明代理服務器的IP地址和端口號。客戶端上網時,每次都把請求送給代理服務器處理,代理服務器根據請求肯定是否鏈接到遠程web服務器獲取數據。若是在本地緩衝區有目標文件,則直接將文件傳給用戶便可。若是沒有的話則先取回文件,先在本地保存一份緩衝,而後將文件發給客戶端瀏覽器。

 

 b  透明代理緩衝服務器

  透明代理緩衝服務和標準代理服務器的功能徹底相同。可是,代理操做對客戶端的瀏覽器是透明的(即不需指明代理服務器的IP和端口)。透明代理服務器阻斷網絡通訊,而且過濾出訪問外部的HTTP80端口)流量。若是客戶端的請求在本地有緩衝則將緩衝的數據直接發給用戶,若是在本地沒有緩衝則向遠程web服務器發出請求,其他操做和標準的代理服務器徹底相同。對於Linux操做系統來講,透明代理使用Iptables或者Ipchains實現。由於不須要對瀏覽器做任何設置,因此,透明代理對於ISPInternet服務器提供商)特別有用。

 

反向代理:

 a.  反向代理緩衝服務器

  反向代理是和前兩種代理徹底不一樣的一種代理服務。使用它能夠下降原始WEB服務器的負載。反向代理服務器承擔了對原始WEB服務器的靜態頁面的請求,防止原始服務器過載。它位於本地WEB服務器和Internet之間,處理全部對WEB服務器的請求,組織了WEB服務器和Internet的直接通訊。若是互聯網用戶請求的頁面在代理服務器上有緩衝的話,代理服務器直接將緩衝內容發送給用戶。若是沒有緩衝則先向WEB服務器發出請求,取回數據,本地緩存後再發送給用戶。這種方式經過下降了向WEB服務器的請求數從而下降了WEB服務器的負載。

 

4 Squid 主要組成部分

   服務名:squid

   主程序:/usr/sbin/squid

   配置目錄:/etc/squid

   主配文件:/etc/squid/squid.conf

   監聽tcp端口號:3128

默認訪問日誌文件:/var/log/squid/access.log

5.squid 經常使用配置選項(/etc/squid/squid.conf)

     http_port 3128 (還能夠只監聽一個一個ip  http_port 192.168.0.1:3128)

         cache_mem 64MB         #緩存佔內存大小

         maximum_object_size 4096KB            #最大緩存塊

         reply_body_max_size  1024000 allow all  #限定下載文件大小

         access_log /var/log/squid/access.log   #訪問日誌存放的文件

         visible_hostname  proxy.test.xom  #可見的主機名

         cache_dir ufs /var/spool/squid 100 16 256

         usf:緩存數據的存儲格式

                /var/spool/squid 緩存目錄

                100 : 緩存目錄佔磁盤空間大小(M

                16 :緩存空間一級子目錄個數

                256 :緩存空間二級子目錄個數

         cache_mgr  webmaster@test.com   #定義管理員郵箱

     http_access deny all   #訪問控制

 

6.squid中的訪問控制

  使用訪問控制特性,能夠控制在訪問時根據特定的時間間隔進行緩存、訪問特定站點或一組站點等等。 Squid 訪問控制有兩個要素:ACL 元素和 訪問列表。訪問列表能夠容許或拒絕某些用戶對此服務的訪問。

  

  下面列出一些重要的 ACL 元素類型

  

  * src : 源地址 (即客戶機IP地址)

  * dst : 目標地址 (即服務器IP地址)

  * srcdomain : 源名稱 (即客戶機名稱)

  * dstdomain : 目標名稱 (即服務器名稱)

  * time : 一天中的時刻和一週內的一天

  * url_regex : URL 規則表達式匹配

  * urlpath_regex: URL-path 規則表達式匹配,略去協議和主機名

  * proxy_auth : 經過外部程序進行用戶驗證

  * maxconn : 單一 IP 的最大鏈接數

  

  爲了使用控制功能,必須先設置 ACL 規則並應用。ACL 聲明的格式以下:

  

  acl acl_element_name type_of_acl_element values_to_acl

  注:

  1. acl_element_name 能夠是任一個在 ACL 中定義的名稱。

  2. 任何兩個 ACL 元素不能用相同的名字。

  3. 每一個 ACL 由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算鏈接;換言之,即任一 ACL bbs.bitsCN.com

  元素的值被匹配,則這個 ACL 元素即被匹配。

  4. 並非全部的 ACL 元素都能使用訪問列表中的所有類型。

  5. 不一樣的 ACL 元素寫在不一樣行中,Squid 將把它們組合在一個列表中。

  

  咱們可使用許多不一樣的訪問條目。下面列出咱們將要用到的幾個:

  * http_access: 容許 HTTP 訪問。這個是主要的訪問控制條目。

  * no_cache: 定義對緩存請求的響應。

  

  訪問列表的規則由一些相似 'allow'  'deny' 的關鍵字構成,用以容許或拒絕向特定或一組 ACL元素提供服務。

  注: 

  1. 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就當即結束。

  2. 一個訪問列表能夠又多條規則組成。

  3. 若是沒有任何規則與訪問請求匹配,默認動做將與列表中最後一條規則對應。

  4. 一個訪問條目中的全部元素將用邏輯與運算鏈接:

  http_access Action 聲明1 AND 聲明2 AND 聲明 OR.

  http_access Action 聲明3

  多個 http_access 聲明間用或運算鏈接,但每一個訪問條目的元素間用與運算鏈接。

  5. 請記住列表中的規則老是遵循由上而下的順序。

7 好了介紹了那麼多下面咱們來對squid幾種代理進行簡單配置:

     標準的代理緩衝服務器的配置:

      a.squid服務器上的配置

         準備環境:軟件包:squid(任意版本)

                雙網卡:eth0:192.168.1.1 eth1:10.106.34.12

           如圖:

 

         vim /etc/squid/squid.conf

                http_port 192.168.1.12:3128 (可寫多個)

             cache_mem 64MB        

             maximum_object_size 4096KB           

             reply_body_max_size  1024000 allow all

             access_log /var/log/squid/access.log 

             visible_hostname  proxy.test.xom

cache_mgr  webmaster@test.com       

http_access allow all 

b.一切配置之後:

            squid –z 初始化緩存

                     squid –k parse 檢查語法

                     service squid start 啓動squid

                     chkconfig squid on 加入開機啓動

                     netstat –nltp   查看3128端口是否打開

c.客服端的配置:

                     ip : 192.168.1.12 gw:192.168.1.1

          而後打開瀏覽器à工具à選項à鏈接à局域網設置à代理服務器

          地址:192.168.1.1 端口:3128

          一切搞定以後在瀏覽器輸入http//www.google.cn便可訪問,上網了easy吧!

 

透明代理緩衝服務器的配置(http://www.cnblogs.com/Skyar/p/3858915.html):

a. aquid服務器上的配置與標準的代理緩衝服務器幾乎同樣      

     差異就是:http_port 192.168.1.12:3128 transparent

b.添加iptables規則:

iptables -t nat -I PREROUTING  -s 192.168.1.0/24 -p tcp -dport 80 -j REDIRECT --to-ports 3128

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j SNAT -to-source 10.106.34.12

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 53 -j SNAT -to-source 10.106.34.12

 

squid –k parse

              service squid reload

 

c.客服端不須要在瀏覽器中指定代理服務器的地址,端口

但需設置上網的DNS

好了通過上三個步驟你就能夠上網了

反向代理緩衝服務器配置

      注意:反向代理和透明代理不能同時使用

       步驟:

a.       Squid服務器的設置,修改/etc/squid/squid.conf

一樣反向代理aquid服務器上的配置與標準的代理緩衝服務器幾乎同樣 

 不一樣之處:http_port 10.106.34.1280 vhost

           Cache_peer 192.168.1.12 parent 80 0 originserver weight=5 max-conn=30

上一行的解釋:定義web服務器 web服務器地址 服務器類型 http端口 icp端口  [可選項]

 

squid –k parse

                     service squid reload

 

b.      客服端的設置(注意:這時的客服端就是web服務器)

               開啓web服務

          好了經過以上配置外網便可訪問你的web服務器了

相關文章
相關標籤/搜索