Squid緩存代理服務器

      網友投稿 834 2022-05-29

      一、關于緩存代理

      1、代理的工作機制

      作為應用層的代理服務軟件,Squid主要提供緩存加速和應用層過濾控制的功能。當客戶機通過代理來請求Web頁面時,指定的代理服務器會先檢查自己的緩存,如果緩存中已經有客戶機需要訪問的頁面,則直接將緩存中的頁面內容反饋給客戶機;如果緩存中沒有客戶機需要訪問的頁面,則由代理服務器向Internet發送訪問請求,當獲得返回的Web頁面以后,將網頁數據保存到緩存中并發送給客戶機。

      HTTP代理的緩存加速對象主要是文字、圖像等靜態Web元素。使用緩存機制后,當客戶機在不同的時候訪問同一Web元素,或者不同的客戶機訪問相同的Web元素時,可以直接從代理服務器的緩存中獲得結果。這樣就大大減少了向Internet重復提交Web請求的過程,提高了客戶機的Web訪問響應速度。

      由于客戶機的Web訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶的真實IP地址,起到一定的保護作用。另一方面,代理服務器擔任著類似“經紀人”的角色,所以有機會針對要訪問的目標、客戶機的地址、訪問的時間端進行過濾控制。

      2、代理的基本類型

      根據實現的方式不同,代理服務可分為傳統代理和透明代理兩個常見的代理服務。

      1)傳統代理

      也就是普通的代理服務,首先必須在客戶機的瀏覽器、QQ聊天工具、下載軟件等程序中手動設置代理服務器的地址和端口,然后才能使用代理服務來訪問網絡。對于網頁瀏覽器,訪問網站時的域名解析請求也會發送給指定的代理服務器。

      2)透明代理

      提供與傳統代理相同的功能和服務,其區別在于客戶機不需要指定代理服務器的地址和端口,而是通過默認路由、防火墻策略將Web訪問重定向,實際上仍然交給代理服務器來處理。重定向的過程對客戶機來說時是“透明”的,用戶甚至并不知道自己在使用代理服務,所以稱為“透明代理”。使用透明代理時,網頁瀏覽器訪問網站時的域名解析請求將優先發給DNS服務器。

      在實際應用中,傳統代理多見于Internet環境,如為QQ程序使用代理可以隱藏本機真實IP地址,為下載工具使用多個代理可以規避服務器的并發連接限制。而透明帶多見于局域網環境,如在Linux網關中啟用透明代理后,局域網主機無需進行額外的設置就可以享受更好的上網速度。

      二、搭建Squid傳統代理服務器

      1、安裝Squid

      tar?xf?squid-3.5.27.tar.gz yum?install?gcc?gcc-c++?make?perl-devel?-y??//安裝環境cd?squid-3.5.27/????????//進入源碼包進行配置 ./configure?\ --prefix=/usr/local/squid?\?#單獨將配置文件修改到其他目錄--sysconfdir=/etc?\?????#單獨將配置文件修改到其他目錄--enable-arp-acl?\??????#可以在規則中設置為直接通過客戶端MAC進行管理,防止客戶端使用IP欺騙--enable-linux-netfilter?\??????#使用內核過濾--enable-linux-tproxy?\?????#支持透明模式--enable-async-io=100?\?????#異步I/O,提升存儲性能--enable-err-language="Simplify_Chinese"?\??????#錯誤信息的顯示語言--enable-underscore?\???????#允許URL中有下劃線--enable-poll?\?????????#使用poll()模式,提升性能--enable-gnuregex???????#使用GNU正則表達式make?&&?make?install????????//編譯并安裝 ln?-s?/usr/local/squid/sbin/*?/usr/local/sbin???????//對命令做本地軟鏈接 useradd?-M?-s?/sbin/nologin?squid???????//為程序創建用戶 chown?-R?squid:squid?/usr/local/squid/var/??????//更改目錄屬主和屬組

      2、更改配置文件(配置傳統代理)

      vi /etc/squid.conf

      http_access allow all

      http_port 3128 //在下面新增

      visible_hostname 192.168.80.181

      cache_mem 64 MB

      cache_swap_low 80

      cache_swap_high 97

      cache_dir ufs /usr/local/squid/var/cache/squid 512 16 256 //配置硬盤緩存,打開#.緩存目錄512M,其中一級目錄16個,二級256個

      cache_effective_user squid

      cache_effective_group squid

      squid?-k?parse?//檢查配置文件squid?-k?rec?//重新加載配置文件squid?-zX?//初始化緩存目錄

      3、制作啟動腳本

      vi /etc/init.d/squid

      #!/bin/bash

      #chkconfig: 35 90 25

      #config: /etc/squid.conf

      #pidfile: /usr/local/squid/var/run/squid.pid

      #Description: Squid - Internet Object Cache

      PID="/usr/local/squid/var/run/squid.pid"

      CONF="/etc/squid.conf"

      CMD="/usr/local/squid/sbin/squid"

      case "" in

      start)

      netstat -utpln | grep squid &>/dev/null

      if [ $? -eq 0 ]

      then

      echo "Squid is running"

      else

      $CMD

      fi

      ;;

      stop)

      $CMD -k kill &>/dev/null

      rm -rf $PID &>/dev/null

      ;;

      status)

      [ -f $PID ] &>/dev/null

      if [ $? -eq 0 ]

      then

      netstat -utpln | grep squid

      else

      echo "Squid is not running"

      fi

      ;;

      restart)

      $0 stop &>/dev/null

      stop &>/dev/null

      echo "正在關閉Squid..."

      $0 start &>/dev/null

      start &>/dev/null

      echo "正在啟動Squid..."

      ;;

      reload)

      $CMD -k reconfigure

      ;;

      check)

      $CMD -k parse

      ;;

      *)

      echo "用法:{start | stop | restart | reload | check | status}"

      esac

      chmod?+x?/etc/init.d/squid??//添加服務執行權限chkconfig?--add?squid???//添加到系統配置中chkconfig?squid?on??????//在系統配置中開啟service?squid?start?????//開啟服務netstat?-anpt?|?grep?3128???//查看監聽端口

      yum?install?httpd?-y??//在另外一臺服務器上安裝apachesystemctl?start?httpd???//啟動服務

      4、配置代理端口并訪問驗證

      Windows使用代理服務器

      瀏覽器—工具—Internet選項—連接—局域網(LAN)設置

      Linux使用代理服務器

      vi /etc/profile

      末行添加

      export HTTP_PROXY=http://192.168.80.100:3128?//使用HTTP協議指定代理

      export HTTPS_PROXY=https://192.168.80.100:3128?//使用HTTPS協議指定代理

      export FTP_PROXY=http://192.168.80.100:3128?//使用FTP協議指定代理

      export NO_PROXY=192.168.1.,192.168.2. //不使用代理的兩個局域網段

      source /etc/profile //刷新環境

      驗證代理服務器

      使用windows瀏覽器訪問網頁192.168.80.110

      cat /usr/local/squid/var/logs/access.log //在squid服務器跟蹤訪問日志文件

      結論:通過訪問日志可以發現客戶機192.168.80.10訪問web服務器192.168.80.110的記錄,說明squi的代理服務器發揮了作用。

      cat /etc/httpd/logs/access_log //在web服務器查看訪問日志的新增記錄

      結論:通過訪問日志可以發現來自代理服務器192.168.80.100的訪問記錄,說明當客戶機使用代理以后,web服務器并不知道客戶機的真實IP地址,因為實際上由代理服務器在代替客戶機訪問。

      當客戶機再次訪問同一web頁面時,Squid訪問日志中會增加新的記錄,但web訪問日志中的記錄不會有變化(除非頁面變更或強制刷新)。說明重復訪問同一靜態頁面時,實際上頁面是由代理服務器通過緩存提供的。

      三、搭建Squid透明代理服務器

      1、系統環境

      內網卡ens33:192.168.80.100

      外網卡ens37:192.168.90.100

      Web服務器:192.168.80.110

      客戶端:192.168.90.11

      echo 1 > /proc/sys/net/ipv4/ip_forward //開啟Squid服務器的路由轉發功能

      2、更改配置文件(透明代理)

      vi /etc/squid.conf //配置服務器并關閉客戶端指定代理設置

      service squid restart //重啟服務

      3、這只iptables的重定向策略

      iptables?-F?//清空iptables策略兵?器新建策略 iptables?-t?nat?-I?PREROUTING?-i?ens33?-s?192.168.80.0/24?-p?tcp?--dport?80?-j?REDIRECT?--to?3128iptables?-t?nat?-I?PREROUTING?-i?ens33?-s?192.168.80.0/24?-p?tcp?--dport?443?-j?REDIRECT?--to?3128iptables?-I?INPUT?-p?tcp?--dport?3218?-j?ACCEPT service?iptables?save

      4、ACL訪問控制

      1)禁止某IP地址主機上網

      acl nolink src 192.168.90.9

      http_access deny nolink

      2)禁止某網段在某時間段上網

      acl nolink src 192.168.1.0/24

      acl nowang time MTWHF 9:00-11:30

      http_access deny nolink nowang

      3)禁止所有人訪問某網站(精確匹配)

      acl nourl dstdomain -i www.qq.com

      http_access deny nourl

      4)禁止所有人訪問某些網站(含有關鍵字的都會過慮)

      acl nourl url_regex -i taobao.com

      http_access deny nourl

      5)禁止下載某類型的文件

      acl nof urlpath_regex -i .avi$ .mkv$

      http_access deny nof

      6)禁止訪問某類型的網站

      acl nop url_regex -i ^emule:// ^thunder

      http_access deny nop

      5、測試透明代理

      內網web服務器指定內網網關

      Squid緩存代理服務器

      vi /etc/sysconfig/network-scripts/ifcfg-ens33

      外網web瀏覽器指定外網網關

      打開win7瀏覽器模擬外網客戶端

      訪問192.168.80.110 //直接訪問內網主機

      四、搭建Squid反向代理服務器

      1、系統環境

      增加一臺web服務器對應的IP地址為:192.168.80.120

      2、修改配置文件(反向代理)

      vi /etc/squid.conf

      http_port 192.168.80.100:80 accel vhost vport

      cache_peer 192.168.80.110 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1

      cache_peer 192.168.80.120 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2

      cache_peer_domain web1 web2 www.yun.com

      service?squid?stop??//服務重啟 service?squid?start

      3、Web訪問代理服務器

      五、Squid日志分析(sarg工具)

      1、安裝sarg工具

      yum?install?httpd?gd?gd-devel?pcre-devel?-y?????//squid服務器安裝apache和對應的庫文件tar?xf?sarg-2.3.11.tar.gz???????//解壓源碼包cd?sarg-2.3.11/ ./configure?\???????//安裝前的配置--prefix=/usr/local/sarg?\ --sysconfdir=/etc/sarg?\ --enable-extraprotection make?&&?make?install????//編譯安裝

      2、相關配置

      vi /etc/sarg/sarg.conf //修改日志分析配置文件

      7 access_log /usr/local/squid/var/logs/access.log //squid的訪問日志位置

      25 title "Squid User Access Reports" //網頁標題

      120 output_dir /var/www/html/squid-reports //分析報告的存放位置

      178 user_ip no //不使用IP代替用戶ID

      184 topuser_sort_field BYTES reverse //升序排列

      190 user_sort_field BYTES reverse

      206 exclude_hosts /usr/local/sarg/noreport //設置不生成報告的主機

      257 overwrite_report no

      289 mail_utility mailx //指定發郵件命令

      434 charset UTF-8

      518 weekdays 0-6 //指定top排序星期周期

      523 hours 7-12,14,16,18-20 //指定top排序時間周期

      633 www_document_root /var/www/html //網頁根目錄

      touch?/usr/local/sarg/noreport?//建立不生成報告的主機列表文件 ln?-s?/usr/local/sarg/bin/sarg?/usr/local/bin/ sarg????????//啟動,執行該命令只記錄一次

      crontab?-e??//做計劃任務分時段記錄 */10?*?*?*?*?/usr/local/bin/sarg

      3、驗證訪問

      http://192.168.80.100:81/squid-reports/

      注意:由于上訴squid做代理80端口被占用,因此將squid服務器httpd對應的端口改為81

      六、Varnish與Nginx緩存服務器

      1、高性能緩存服務器Varnish

      Varnish是一款高性能的、開源的方向代理服務器和緩存器。挪威最大的在線報紙Verdens Gang使用了3臺Varnish代替了原來的12臺Squid,性能更好!

      Varnish與Squid的對比如下:

      (1)優點

      Varnish具有更好的穩定性、更快的訪問速度、更多的并發連接支持數,可以通過管理端口來管理緩存。

      (2)缺點

      1)在高并發狀態下,Varnish消耗更多的CPU、I/O和內存資源。

      2)Varnish進程一旦掛起、崩潰或者重啟,緩存的數據會從內存中釋放,此時所有的請求都會轉發到后端服務器,給后端服務器造成很大壓力。

      2、輕量級緩存服務器Nginx

      Nginx支持類似Squid的緩存功能,把URL以及相關信息當成key,用MD5編碼Hash后把數據文件保存在硬盤上。

      Nginx只能為只當的URL或者狀態碼設置過期時間,并不支持類似Squid的purge命令來手動清除指定的緩存頁面。可以通過第三方的ngx_cache_purge來清除指定的URL緩存。

      Nginx的緩存加速功能是由proxy_cache和fastcgi_cache兩個功能模塊完成的。

      Nginx緩存加速的特點如下:

      1)緩存功能十分穩點,運行速度不遜于Squid。

      2)對多核CPU的利用率比其他的開源軟件要好。

      3)支持高并發請求數,能同時承受更多的訪問請求。

      ----------------------------------

      本文轉自居思涵博客51CTO博客

      DNS 網站

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【愚公系列】2022年01月 Java教學課程 52-File文件操作
      下一篇:防火墻原理與定義
      相關文章
      亚洲av色香蕉一区二区三区| 亚洲日韩精品无码专区加勒比☆| 精品无码专区亚洲| 亚洲一卡2卡4卡5卡6卡在线99| 久久亚洲精品成人AV| 亚洲韩国—中文字幕| 亚洲国产精品不卡在线电影| 亚洲AV无码国产精品麻豆天美| 亚洲高清国产拍精品26U| 亚洲午夜久久久久久久久久| 亚洲一区二区三区自拍公司| 国产亚洲av人片在线观看| 亚洲色成人中文字幕网站| 亚洲日韩欧洲无码av夜夜摸| 亚洲中文字幕日产乱码高清app| 亚洲综合熟女久久久30p| 亚洲女久久久噜噜噜熟女| 亚洲国产另类久久久精品小说| 久久久久久久尹人综合网亚洲| 亚洲国产精品va在线播放 | 亚洲AV无码AV男人的天堂| 久久亚洲AV成人出白浆无码国产| 99久久亚洲精品无码毛片| 亚洲无成人网77777| 亚洲中文无码亚洲人成影院| 国产精品无码亚洲精品2021| 亚洲精品无码AV中文字幕电影网站 | 亚洲AV香蕉一区区二区三区| 亚洲 小说区 图片区 都市| 亚洲成a人片在线观看久| 久久综合亚洲色HEZYO国产| 亚洲av无码片在线播放| 亚洲视频手机在线| 亚洲高清有码中文字| 亚洲6080yy久久无码产自国产| 亚洲人午夜射精精品日韩| 亚洲精品国产精品乱码不99| 91天堂素人精品系列全集亚洲| 亚洲另类古典武侠| 亚洲成a人片在线不卡一二三区| 亚洲精品久久久www|