你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2017-05-05] 来源:Linux社区  作者:blxueyuan [字体: ]

一: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

 

Linux下Squid代理缓存服务环境部署  http://www.linuxidc.com/Linux/2016-10/136594.htm

 

Squid:实现高速的Web访问 http://www.linuxidc.com/Linux/2013-04/83512.htm

 

CentOS 6.2 编译安装Squid 配置反向代理服务器 http://www.linuxidc.com/Linux/2012-11/74529.htm

 

Squid代理http和https方式上网的操作记录  http://www.linuxidc.com/Linux/2017-02/140398.htm

 

Squid代理服务器搭建及配置 http://www.linuxidc.com/Linux/2016-03/129392.htm

 

CentOS 6.4下DNS+Squid+Nginx+MySQL搭建高可用Web服务器 http://www.linuxidc.com/Linux/2014-04/99984.htm

 

Squid 的详细介绍请点这里
Squid 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-05/143460.htm

linux
相关资讯       Squid  squid代理服务器 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款