squid正反向代理-加快网站访问速度

配置squid代理服务器加快网站访问速度

一:squid服务概述

  Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。

代理服务器是介于 Internet 和内网计算机之间的联系桥梁,他的功能就是代替内网计算机去访问互联网信息。使用代理服务器,可以有效的节约IP资源,多台内网计算机可以通过同一个IP访问Internet。目前大部分企业都是通过代理服务器为企业内部员工提供上网服务。

端口: 3128

二:实验安装

1:安装squid:

[root@xuegod63 ~]# yum install squid -y

2:配置文件位置:

[root@xuegod63 ~]# ls /etc/squid/squid.conf

3:启动服务

[root@xuegod63 ~]# /etc/init.d/squid start

[root@xuegod63 ~]# netstat -antup | grep 3128

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

[root@xuegod63 ~]# chkconfig squid on

[root@xuegod63 ~]# chkconfig --list squid

squid          0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭

4:服务启动失败的解决方法

[root@xuegod63 ~]# vim /etc/hosts

192.168.10.20 squid_A.tarena.com  sxueod63

[root@xuegod63 ~]#  squid -z    #初始化缓存                   

2014/03/12 14:06:39| Creating Swap Directories

[root@xuegod63 ~]# /etc/init.d/squid start

三:实战举例

根据实现的方式不同,代理服务可以分为正向代理和反向代理,正向代理包括传统代理和透明代理,这两种代理服务完成的工作相差不多

第一块:正向代理

1:正向传统代理服务器

在客户端使用的时候需要在web游览器中进行设置,来指定服务器的端口和地址,这种代理主要是针对局域网访问internet的时候用的比较广泛,但由于客户端需要进行设置,所以这种并不是最常用的。

1)加速原理:

wKioL1j_-VOzZp2FAAAr-dUD5ng214.png 

代理服务器的功能是代替网络用户去访问网络信息,并把获得的信息返回给用户,其工作步骤大致如下:

1) 客户机向代理服务器发起访问互联网的请求

2) 代理服务器收到请求后检查请求是否被允许,如果允许将会进行下一步处理,否则丢弃该请求。

3) 代理服务器先查找本地缓存中是否有客户机请求的数据,如果有则直接返回给客户端,否则继续下一步。

4) 如果没有找到数据缓存,则代替客户机在互联网上发起请求。

5) 接到请求回应后复制一份到缓存中,然后返回给客户机

1)实验拓扑

wKiom1j_-WTSul6qAAB3MmN_E5c713.png 

2)实验需求:

搭建squid代理服务器,使内网主机xuegod64:192.168.2.2 ,能够通过xuegod63上的squid代理服务器加速上网。

3)实验环境

配置xuegod63网络:   eth0: 192.168.1.63  添加eth1,配置IP:192.168.2.1  vmnet4

配置xuegod64网络:   添加eth0,配置IP:192.168.2.2 网关: 192.168.2.1     vmnet4

4)实验步骤

xuegod63配置:

[root@xuegod63 ~]# vim /etc/squid/squid.conf

改: #http_access deny all

 为: http_access allow all          //允许所有用户使用它作为代理

5)启动服务

[root@xuegod63 ~]# service squid restart

[root@xuegod63 ~]# chkconfig squid on

6)配置xuegod64 客户端

   在浏览器里指定代理服务器的ip地址(192.168.2.1)和端口号(3128)

 

wKioL1j_-XrwwtlXAACwE9WtbSE269.png

wKiom1j_-XqQytXtAADHWyrNiRQ705.png

 

 wKiom1j_-kzQIPIIAACwE9WtbSE699.png

7)测试:

wKioL1j_-YyTPRrKAAII_sXfKn8950.png 

#在xuegod64上的浏览器中打开www.163.com可以访问,但是当ping www.163.com ping不通的

wKiom1j_-a_y_PoLAAF72UAclG0649.png

#在xuegod64上的浏览器中打开192.168.1.1  可以访问到当前的路由器,并且找到了当前的 主机是匿名主机的IP地址是192.168.1.63  而不是xuegod64上的IP地址。这样xuegod63就是一个代理服务器了,客户端(xuegod63)通过代理服务器(xuegod64)访问到网络,而客户端本身自己是不能访问网络的。

  

 2:正向透明代理服务器

提供与传统代理相同的服务,但不需要用户进行设置,而是通过默认路由和防火墙的重定向功能,在整个过程中用户不知道其中的过程,所以称之为透明代理。使用透明代理时网页游览器访问网站时的域名解析请求优先发给DNS服务进行解析。透明代理必须在linux操作系统的防火墙上进行操作。操作上不是很灵活

 

1)实验拓扑

wKioL1j_-c7Q2PHaAAB3MmN_E5c245.png 

2)实验要求

   客户端用在浏览器里指定代理服务器的ip地址和端口号,就可以直接访问公网上的网站服务器。配置透明squid代理提升访问速度

透明代理= squid + iptables

3)实验步骤

(1修改配置文件配置支持透明代理

[root@xuegod63 ~]#vim /etc/squid/squid.conf

改:http_port 3128

为:http_port 3128 transparent 透明的

[root@xuegod63 ~]# service squid restart

(2)开启路由转发功能:

[root@xuegod63 ~]# vim /etc/sysctl.conf

改:net.ipv4.ip_forward = 0

为:net.ipv4.ip_forward = 1

[root@xuegod63 ~]# sysctl –p

(3)配置iptables:

[root@xuegod63 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to 192.168.1.63 #让内网可以上网

或者

[root@xuegod63 ~]# iptables -t nat -A PREROUTING -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

 (4)测试:把浏览器取消代理。

wKiom1j_-e-x95h6AAEcXdNhH50252.png 

[root@xuegod64 ~]# ping g.cn  

PING g.cn (203.208.48.144) 56(84) bytes of data.

64 bytes from 203.208.48.144: icmp_seq=1 ttl=43 time=72.4 ms

64 bytes from 203.208.48.144: icmp_seq=2 ttl=43 time=73.7 ms

64 bytes from 203.208.48.144: icmp_seq=3 ttl=43 time=74.0 ms

#这样就可以上网了

 

第二块:反向代理

反向代理服务器的工作原理

反向代理方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送 到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

wKioL1j_-frx0iKhAAHor4vy__w020.png 

反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

1、作内容服务器的替身

如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

这样,代理服务器就在安全数据库和可能的恶意***之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸***成功,作恶者充其量也仅限于访 问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

wKiom1j_-gezpW7EAAEEIl4IPlg485.png

2、作为内容服务器的负载均衡器

可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。

对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。

可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期 间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

wKiom1j_-hDT4W-HAAEzI1pd_3g624.png 

例:配置squid反向代理加速度内网web服务器访问速度

1):实验拓扑图:

wKioL1j_-hqzlv3vAAB57iGE5Fg110.png 

2):实验要求

客户端物理机访问 192.168.1.63 代理服务器。192.168.1.63 代理服务器缓存客户端所需要的web服务器中的数据。实现xuegod63给xuegod64 加速度端口80和81两个服务。只加速度静态页面或视频。   

思路:

1:在代理服务器上,squid的主配置文件中开启支持虚拟主机功能,然后配置squid主配置文件,指定内容web服务器的IP地址。

2:在内容服务器上,开启web服务器,在httpd服务的主配置文件中配置虚拟主机。

3):实验步骤

(1)公网客户端,物理机:修改物理机hosts文件:

windows 下的hosts文件在:C:\Windows\System32\drivers\etc首先,在 Client 端修改 hosts 文件,添加如下两行:

192.168.1.63  www.serverA.com

192.168.1.63   www.serverB.com

#在这里面第一次修改是不修改的,只需要将hosts文件拖到桌面就可以修改了,之后再将修改的文件拖到此文件夹中

(2):配置xuegod63 squid代理服务器:

#这里,Squid 反向代理服务器监听端口:8000 (默认是:3128)访问时,需要在客户端,打开浏览器,在浏览器地址栏输入: www. servera.com:8000

[root@xuegod63 ~]# vim /etc/squid/squid.conf

改:59 #http_access denny all

为:60 http_access allow all

改:http_port  3128

为:http_port 8000 vhost  

# 配置Squid 服务器监听本机 8000 端口,开启vhost 支持虚拟主机功能,这样也可以给多台服务器加速。

 

 (3):打开虚拟主机支持 ,在此行下面,添加以红色内容:

 [root@xuegod63 ~]# vim /etc/squid/squid.conf

cache_peer 192.168.2.2 parent 80 0 no-query originserver weight=1 name=a

cache_peer 192.168.2.2 parent 81 0 no-query originserver weight=1 name=b

cache_peer_domain a www.serverA.com

cache_peer_domain b www.serverB.com

#以上4行配置,让 Squid 服务器知道:

#从客户端过来的请求如果找的www.serverA.com,则 Squid代理服务器客户端192.168.2.2 的端口 80发送回复

#从客户端过来的请求如果找的www.serverB.com,则 Squid代理服务器客户端192.168.2.2的端口 81 发送回复

cache_peer_access a allow all

cache_peer_access b allow all

# cache_peer 设置:允许其它 cache 机和访问a和b

[root@xuegod63 ~]# service squid restart

 

(4):配置两个站点web服务器,xuegod64配置HTTP虚拟主机:基于端口做虚拟主机:

[root@xuegod64 ~]# cp -r /boot/grub/ /var/www/html/

[root@xuegod64 ~]#echo  www.serverA.com  > /var/www/html/index.html 

[root@xuegod64 ~]#echo  www.serverB.com  > /var/www/html/grub/index.html

[root@xuegod64 ~]# vim /etc/httpd/conf/httpd.conf

#Listen 12.34.56.78:80

Listen 80

Listen 81

 

NameVirtualHost *:80

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html #虚拟主机80端口的网站根目录

    ServerName www.serverA.com #虚拟主机(web服务器)名称

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost *:81>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/grub#虚拟主机81端口的网站根目录

    ServerName www.serverB.com #虚拟主机(web服务器)的名称

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

[root@xuegod64 ~]# service httpd restart

 

(5) :测试:http://www.servera.com:8000/

wKioL1j_-iXxrb7xAABfeeT_5-8746.png 

http://www.serverb.com:8000/

wKioL1j_-jGx0wtpAABR5eqL5dQ454.png 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值