<i id='jv78k'><div id='jv78k'><ins id='jv78k'></ins></div></i>
  • <tr id='jv78k'><strong id='jv78k'></strong><small id='jv78k'></small><button id='jv78k'></button><li id='jv78k'><noscript id='jv78k'><big id='jv78k'></big><dt id='jv78k'></dt></noscript></li></tr><ol id='jv78k'><table id='jv78k'><blockquote id='jv78k'><tbody id='jv78k'></tbody></blockquote></table></ol><u id='jv78k'></u><kbd id='jv78k'><kbd id='jv78k'></kbd></kbd>
  • <dl id='jv78k'></dl>

    <code id='jv78k'><strong id='jv78k'></strong></code>
        <acronym id='jv78k'><em id='jv78k'></em><td id='jv78k'><div id='jv78k'></div></td></acronym><address id='jv78k'><big id='jv78k'><big id='jv78k'></big><legend id='jv78k'></legend></big></address>

        <span id='jv78k'></span>

        <fieldset id='jv78k'></fieldset><ins id='jv78k'></ins>
        <i id='jv78k'></i>

            Linux系统中Squid代理服务器配置全过程解析

            • 时间:
            • 浏览:21
            • 来源:124软件资讯网

                什么是squid?

                Squid是一个缓存internet数据的一个软件  ,它吸收用户的下载申请  ,并自动处置惩罚所下载的数据  。也就是说  ,当一个用户象要下载一个主页时  ,它向Squid发出一个申请 ,要Squid替它下载  ,然后Squid毗连所申请网站并请求该主页 ,接着把该主页传给用户同时保留一个备份  ,当此外用户申请同样的页面时  ,Squid把生存的备份立刻传给用户  ,使用户以为速率相当快 。现在 ,Squid 可以署理HTTP, FTP, GOPHER, SSL 和 WAIS 协议.

                使用squid的利益:快速响应,淘汰网络壅闭,增强会见控制,提高宁静性.可以针对特定的网站,用户,网络,数据类型实行会见控制.

                squid有3种署理方式:通俗署理模式,透明署理模式,反向署理模式

                1.通俗署理模式

                一个尺度的署理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到当地网络上的一台主机上(即署理服务器)  。当被缓存的页面被第二次会见的时间 ,浏览器将直接从当地署理服务器那里获取请求数据而不再向原web站点请求数据  。这样就节约了名贵的网络带宽  ,而且提高了会见速率  。可是 ,要想实现这种方式  ,必须在每一个内部主机的浏览器上明确指明署理服务器的IP地址端口号 。客户端上网时 ,每次都把请求送给署理服务器处置惩罚  ,署理服务器凭据请求确定是否毗连到远程web服务器获取数据  。若是在当地缓冲区有目的文件  ,则直接将文件传给用户即可  。若是没有的话则先取回文件  ,先在当地生存一份缓冲  ,然后将文件发给客户端浏览器  。

                2.透明署理模式

                透明署理缓冲服务和尺度署理服务器的功效完全相同  。可是 ,署理操尴尬刁难客户端的浏览器是透明的(即不需指明署理服务器的IP和端口) 。透明署理服务器阻断网络通讯  ,而且过滤出会见外部的HTTP(80端口)流量  。若是客户端的请求在当地有缓冲则将缓冲的数据直接发给用户  ,若是在当地没有缓冲则向远程web服务器发出请求  ,其余操作和尺度的署理服务器完全相同  。对于Linux操作系统来说  ,透明署理使用Iptables或者Ipchains实现 。由于不需要对浏览器作任何设置  ,以是  ,透明署理对于ISP(Internet服务器提供商)特殊有用  。

                3.反向署理模式

                反向署理是和前两种署理完全差别的一种署理服务  。使用它可以降低原始WEB服务器的负载,又称HTTP加速器  。反向署理服务器负担了对原始WEB服务器的静态页面的请求,它是一种通过在忙碌的WEB服务器和Internet之间增添一个高速的WEB缓冲服务器(即:WEB反向署理服务器)来降低现实的WEB服务器的负载.Web服务器加速(反向署理)是针对Web服务器提供加速功效的 。它作为署理Cache  ,但并不针对浏览器用户  ,而针对一台或多台特定Web服务器 。只要将Reverse Proxy Cache装备放置在一台或多台Web服务器前端即可 。当互联网用户会见某个WEB服务器时 ,通过DNS服务器剖析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时Reverse Proxy Server装备充当Web服务器  ,浏览器可以与它毗连  ,无需再直接与Web服务器相连  。因此  ,大量Web服务事情量被卸载到反向署理服务上  。不光能够防止外部网主机直接和web服务器直接通讯带来的宁静隐患  ,而且能够很大水平上减轻web服务器的肩负  ,提高会见速率 。

                以下是squid反向署理实验

                有2台服务器,1台HTTP Server 10.1.1.200,端口80,有2个虚拟机主机www.testone.com www.testtwo.com提供服务

                另一台Squid Server为反向署理服务器,10.1.6.200

                客户机ip:10.1.6.173

                测试: 客户机会见通过Squid Server 会见HTTP Server. 这里需要在客户机上修改/etc/hosts,添加二行10.1.6.200 www.testone.com

                10.1.6.200 www.testtwo.com(为了让客户性能够剖析这2个域名对应ip为10.1.6.200 squid反向署理服务器的ip,监听端口默认是3128)

                Squid Server 修改/etc/hosts,添加二行10.1.1.200 www.testone.com

                10.1.1.200 www.testtwo.com

                安装squid

                代码如下:

                root@10.1.6.200:~# apt-get install squid

                设置squid

                代码如下:

                root@10.1.6.200:~# vim /etc/squid/squid.conf

                http_port 3128 #http_port告诉squid在哪个端口监听http请求,默认3128

                http_port 10.1.6.200:80 vhost #这里vhost支持虚拟主机

                cache_dir aufs /opt/squid/cache 200 16 256 #缓存目录的设置,语法:<目录>

                代码如下:

                #界说acl(会见控制列表),语法为:acl <设置的内容>

                acl all src all

                acl localhost src 127.0.0.1/32

                acl to_localhost dst 127.0.0.0/8

                acl localnet src 10.0.0.0/8 # RFC1918 possible internal network

                acl localnet src 172.16.0.0/12 # RFC1918 possible internal network

                acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

                代码如下:

                acl Safe_ports port 80

                acl purge method PURGE

                acl CONNECT method CONNECT

                acl manager proto cache_object

                代码如下:

                #使用前面界说的acl,界说会见控制规则

                http_access allow manager localhost

                http_access deny manager

                http_access allow purge localhost

                http_access deny purge

                http_access deny !Safe_ports

                http_access allow all

                代码如下:

                cache_mem 200 MB #若是物理内存很大,只管设置大些

                maximum_object_size 20 MB #最大缓存块

                maximum_object_size_in_memory 5 MB #与内存生存资料有关的设置

                代码如下:

                #虚拟机主机署理设置,如从客户端会见www.testone.com,则Squid向www.testone.com的80端口发送请求.

                cache_peer www.testone.com parent 80 0 no-query originserver name=one

                cache_peer www.testtwo.com parent 80 0 no-query originserver name=two

                cache_peer_domain one www.testone.com

                cache_peer_domain two www.testtwo.com

                代码如下:

                #设置squid用户及用户组

                cache_effective_user proxy

                cache_effective_group proxy

                代码如下:

                #下面是关于日志文件

                access_log /var/log/squid/access.log squid

                cache_log /var/log/squid/cache.log

                cache_store_log none

                代码如下:

                mime_table /usr/share/squid/mime.conf

                pid_filename /var/log/squid/squid.pid

                代码如下:

                coredump_dir /var/spool/squid

                设置缓存目录权限为proxy,否则启动会提醒没有权限

                代码如下:

                root@10.1.6.200:opt# chown -R proxy:proxy squid/

                root@10.1.6.200:opt# ll

                total 8

                drwxr-xr-x 3 proxy proxy 4096 2013-02-21 22:42 squid

                在开启squid服务之前,先检查设置文件是否准确:(如果看不输出,设置文件有用)

                root@10.1.6.200:opt# squid -k parse

                初始化cache目录,即建设缓存目录的存储花样(在首次运行squid之前,或者增添了新的cache_dir,必须初始化cache目录),cache目录初始化可能破费一些时间,依赖cache目录的巨细和数目,要视察详细历程可以加-X选项.

                代码如下:

                root@10.1.6.200:squid# squid -z

                2013/02/22 20:31:10| Creating Swap Directories

                启动squid服务

                代码如下:

                root@10.1.6.200:squid# /etc/init.d/squid start

                Starting Squid HTTP proxy: squid.

                root@10.1.6.200:squid# netstat -tunlp

                Active Internet connections (only servers)

                Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

                tcp 0 0 0.0.0.0:39360 0.0.0.0:* LISTEN 1383/rpc.statd

                tcp 0 0 127.0.0.1:833 0.0.0.0:* LISTEN 1929/famd

                tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1372/portmap

                tcp 0 0 10.1.6.200:80 0.0.0.0:* LISTEN 2491/(squid)

                tcp 0 0 0.0.0.0:22000 0.0.0.0:* LISTEN 1623/sshd

                tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 2491/(squid)

                tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1890/exim4

                udp 0 0 0.0.0.0:58152 0.0.0.0:* 2491/(squid)

                udp 0 0 0.0.0.0:3130 0.0.0.0:* 2491/(squid)

                udp 0 0 0.0.0.0:711 0.0.0.0:* 1383/rpc.statd

                udp 0 0 0.0.0.0:111 0.0.0.0:* 1372/portmap

                udp 0 0 0.0.0.0:59518 0.0.0.0:* 1383/rpc.statd

                这里不详细解说HTTP Server 10.1.1.200设置虚拟主机历程,已划分设置好www.testone.com,www.testtwo.com虚拟主机

                检察HTTP Server日志,会发现是Squid Server ip 请求数据.

                代码如下:

                root@10.1.1.200:apache2# tail -f www.testone.com_access.log

                10.1.6.200 - - [22/Feb/2013:20:47:17 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 734; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

                代码如下:

                root@10.1.1.200:apache2# tail -f www.testtwo.com_access.log

                10.1.6.200 - - [22/Feb/2013:20:49:07 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; QQDownload 734; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

                以下是整个会见原理历程:

                1.当客户端在浏览器输入:www.testone.com 通过当地/etc/hosts剖析,域名www.testone.com对应的ip是10.1.6.200(Squid反向署理服务器),于是客户端向Squid反向署理服务器默认3128端口发送请求,注重:在客户端输入www.testone.com和http://10.1.6.200是纷歧样的,若是是通过ip请求,则不能实现让Squid服务器对内部网络多个服务器署理,需要使用域名方式.在 设置 Squid 时  ,有两个选项  ,cache_peer 和 cache_peer_domain  ,这两个设置项让 Squid 有能力知道www.testone.com这个请求最终是想会见HTTP服务器10.1.1.200的80端口  ,从而实现了 Squid 对内部多个服务器作署理的功效需求 。

                2.Squid服务器收到客户端发来的请求,一看是www.testone.com,从设置它知道请求HTTP服务器10.1.1.200的80端口.

                3.HTTP服务器提供服务监听80端口,收到Squid发送来的请求,于是凭据请求发送响应数据给Squid服务器.

                4.Squid收到HTTP服务器从80端口发送过来的数据后,会将该数据在当地缓存,同时将数据从自己的3128发送给客户端10.1.6.173.