实验:squid反向代理服务器加速web

-by zlong

一、实验环境

(1)两台linux主机(Red Hat Enterprise Linux),分别是RHEL1-WEB和RHEL2-SQUID,squid代理服务器和DNS服务器在RHEL2-SQUID上,apache服务器在RHEL1-WEB上

RHEL1-WEB(内网)上

IP

网关

域名

192.168.1.107/24(eth0)

192.168.1.1

10.1.1.2/24(eth0:1)

10.1.1.1

Web1.huawei.com

10.1.1.3/24(eth0:2)

10.1.1.1

Web2.huawei.com

10.1.1.4/24(eth0:3)

10.1.1.1

Web3.huawei.com

RHEL2-SQUID(squid代理服务器)

外网网卡eth0

192.168.1.109/24

内网网卡eth1

10.1.1.1/24

(2)Win7本地主机:

IP:192.168.1.104/24gateway:192.168.1.1

(3)浏览器

Sougou3.2

二、配置网卡的IP

两台linux的网卡eth0上的IP事先已配好,且已设置开机启动此处略

[root@RHEL1-WEBetc]# ifconfig eth0:1 10.1.1.2netmask 255.255.255.0 up

[root@RHEL1-WEBetc]# ifconfig eth0:2 10.1.1.3netmask 255.255.255.0 up

[root@RHEL1-WEBetc]# ifconfig eth0:3 10.1.1.4netmask 255.255.255.0 up

[root@RHEL2-SQUIDsquid]# ifconfig eth1 10.1.1.1 netmask 255.255.255.0 up

其他网卡开机启动的设置

(1)RHEL1-WEB上的eth0:1、eth0:2、eth0:3

[root@RHEL1-WEBconf]# cd /etc/sysconfig/network-scripts/

[root@RHEL1-WEBnetwork-scripts]# cp -p ifcfg-eth0 ifcfg-eth0:1

[root@RHEL1-WEBnetwork-scripts]# cp -p ifcfg-eth0 ifcfg-eth0:2

[root@RHEL1-WEBnetwork-scripts]# cp -p ifcfg-eth0 ifcfg-eth0:3

[root@RHEL1-WEBnetwork-scripts]# vi ifcfg-eth0:1

修改为以下内容

DEVICE=eth0:1

BOOTPROTO=static

ONBOOT=yes

IPADDR=10.1.1.2

NETMASK=255.255.255.0

GATEWAY=10.1.1.1

eth0:2、eth0:3仿照进行配置

(2)RHEL2-SQUID上的eth1

[root@RHEL2-SQUIDsquid]# cd /etc/sysconfig/network-scripts/

[root@RHEL2-SQUIDnetwork-scripts]# vi ifcfg-eth1

修改为以下内容

DEVICE=eth1

BOOTPROTO=static

ONBOOT=yes

IPADDR=10.1.1.1

NETMASK=255.255.255.0

GATEWAY=10.1.1.1

HWADDR=00:0c:29:4c:81:11

三、创建huawei.com的正向区域

DNS服务器的安装此处省略!

[root@RHEL2-SQUID~]# cd /var/named/chroot/etc

[root@RHEL2-SQUIDetc]#vi named.rfc1912.zones

增加以下区域:

zone "huawei.com"IN {

type master;

file "huawei.com.hosts";

allow-update {none; };

};

创建huawei.com的正向解析区域数据库文件

[root@RHEL2-SQUIDetc]#cd /var/named/chroot/var/named

[root@RHEL2-SQUIDnamed]# cp -p localhost.zonehuawei.com.hosts

[root@RHEL2-SQUIDnamed]# vi huawei.com.hosts

编辑为以下内容:

$TTL86400

@IN SOAns.huawei.com.root.huawei.com. (

42; serial (d. adams)

3H; refresh

15M; retry

1W; expiry

1D ); minimum

IN NSns.huawei.com.

ns.huawei.com.IN A10.1.1.1

www.huawei.com.IN A10.1.1.2

IN A10.1.1.3

IN A10.1.1.4

web1.huawei.com.IN A10.1.1.2

web2.huawei.com.IN A10.1.1.3

web3.huawei.com.IN A10.1.1.4

保存退出,重启DNS

[root@RHEL2-SQUIDnamed]# service named restart

修改DNS的客户端配置文件

[root@RHEL2-SQUIDnamed]# vi /etc/resolv.conf

在末尾添加:(若之前其中有其他域的DNS,不用覆盖,不影响效果)

search huawei.com

nameserver10.1.1.1

四、安装配置squid服务器

在RHEL2-SQUID上进行

[root@RHEL2-SQUIDnamed]# mount /dev/hdc /mnt/cdrom

mount: blockdevice /dev/hdc is write-protected, mounting read-only

[root@RHEL2-SQUIDnamed]# cd /mnt/cdrom/Server

[root@RHEL2-SQUIDServer]# find -name "squid*"

./squid-2.6.STABLE21-3.el5.i386.rpm

[root@RHEL2-SQUIDServer]#rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

warning:squid-2.6.STABLE21-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID37017186

Preparing...########################################### [100%]

1:squid########################################### [100%]

安装成功,下面开始配置

[root@RHEL2-SQUIDServer]# cd /etc/squid

[root@RHEL2-SQUIDsquid]# cp -p squid.confsquid.conf.bak

[root@RHEL2-SQUIDsquid]# rm –rf squid.conf

squid.conf 的配置是实现缓存的重点和原理

[root@RHEL2-SQUIDsquid]# vi squid.conf

添加以下配置信息

http_port80 accel vhost vport

cache_dirufs /var/spool/squid 100 16 256

cache_mem32 MB

cache_swap_low90

cache_swap_high95

cache_access_log/var/log/squid/access.log

cache_effective_usersquid

cache_effective_groupsquid

aclall src 0.0.0.0/0.0.0.0

acllocalhost src 127.0.0.1/255.255.255.255

http_accessallow localhost

http_accessallow all

http_reply_accessallow all

coredump_dir/var/spool/squid

visible_hostnamewww.huawei.com

cache_peer10.1.1.2 parent 80 0no-queryoriginserver weight=1 name=web1

cache_peer10.1.1.3 parent 80 0no-queryoriginserver weight=1 name=web2

cache_peer10.1.1.4 parent 80 0no-queryoriginserver weight=1 name=web3

cache_peer_domainweb1 www.huawei.com

cache_peer_domainweb2 www.huawei.com

cache_peer_domainweb3 www.huawei.com

cache_peer_accessweb1 allow all

cache_peer_accessweb2 allow all

cache_peer_accessweb3 allow all

保存退出

创建squid的缓存目录,并重启squid,设置开机启动,修改DNS客户端配置文件

[root@RHEL2-SQUIDsquid]#squid–z

[root@RHEL2-SQUIDsquid]# service squid restart

[root@RHEL2-SQUIDsquid]#ntsysv

[root@RHEL2-SQUIDetc]# viresolv.conf

更改缓存目录的文件和目录所有者以及权限

[root@RHEL2-SQUIDspool]# chown -R squid.squid squid

[root@RHEL2-SQUIDspool]# chmod 777 squid

五、安装配置apache

[root@RHEL1-WEB ]#cd /mnt/cdrom/Server

[root@RHEL1-WEBServer]# find -name "httpd*"

./httpd-2.2.3-22.el5.i386.rpm

./httpd-devel-2.2.3-22.el5.i386.rpm

./httpd-manual-2.2.3-22.el5.i386.rpm

[root@RHEL1-WEBServer]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm

warning:httpd-2.2.3-22.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

error: Faileddependencies:

libapr-1.so.0 isneeded by httpd-2.2.3-22.el5.i386

libaprutil-1.so.0is needed by httpd-2.2.3-22.el5.i386

有包的依赖关系,依次安装下面几个包

[root@RHEL1-WEBServer]# rpm -ivh apr-1.2.7-11.i386.rpm

[root@RHEL1-WEBServer]# rpm -ivh postgresql-libs-8.1.11-1.el5_1.1.i386.rpm

[root@RHEL1-WEBServer]# rpm -ivh apr-util-1.2.7-7.el5.i386.rpm

[root@RHEL1-WEBServer]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm

安装完毕,设置开机启动

[root@RHEL1-WEBServer]# ntsysv

配置

[root@RHEL1-WEBetc]# cd /etc/httpd/conf/

[root@RHEL1-WEBconf]# ll

总计 52

-rw-r--r-- 1 rootroot 33726 2008-11-12 httpd.conf

-rw-r--r-- 1 rootroot 12958 2008-11-12 magic

[root@RHEL1-WEBconf]# cp -p httpd.confhttpd.conf.bak

[root@RHEL1-WEBconf]# vihttpd.conf

(1)找到#ServerNamenew.host.name:80这一行修改为:

ServerName10.1.1.1:80(这里更改的是apache默认站点的名称和端口号,很重要的一步,缺少它最后解析不出来)

(2)在配置文件末尾添加以下内容(三个基于IP的虚拟主机)

<VirtualHost10.1.1.2>

ServerAdminwebmaster@dummy-host.example.com

DocumentRoot/www/web1

ServerName web1.huawei.com

</VirtualHost>

<VirtualHost10.1.1.3>

ServerAdminwebmaster@dummy-host.example.com

DocumentRoot/www/web2

ServerName web2.huawei.com

</VirtualHost>

<VirtualHost 10.1.1.4>

ServerAdminwebmaster@dummy-host.example.com

DocumentRoot/www/web3

ServerName web3.huawei.com

</VirtualHost>

保存退出,创建虚拟主机的文档根目录及三个网站的相同的页面index.html

[root@RHEL1-WEBconf]# mkdir -p /www/web1

[root@RHEL1-WEBconf]# mkdir -p /www/web2

[root@RHEL1-WEBconf]# mkdir -p /www/web3

[root@RHEL1-WEBconf]# vi /www/web1/index.html

输入:这是网站的测试页面!(测试信息)

[root@RHEL1-WEBconf]# cp -p /www/web1/index.html /www/web2/index.html

[root@RHEL1-WEBconf]# cp -p /www/web1/index.html /www/web2/index.html

[root@RHEL1-WEBconf]# cp -p /www/web1/index.html /www/web3/index.html

重启httpd

[root@RHEL1-WEBconf]# service httpd restart

修改RHEL1-WEB上DNS的客户端配置文件

[root@RHEL1-WEB named]#vi /etc/resolv.conf

在末尾添加:(若之前其中有其他域的DNS,不用覆盖,不影响效果)

searchhuawei.com

nameserver10.1.1.1

六、激活squid服务器上的路由转发功能

[root@RHEL2-SQUID~]#echo 1 > /proc/sys/net/ipv4/ip_forward

写入开机启动

[root@RHEL2-SQUID~]# vi /etc/rc.d/rc.local

编辑/etc/rc.d/rc.local在后面写上上面一句

七、测试

(1)在win7上打开C:\windows\system32\drivers\etc\hosts

添加以下一条主机记录:

192.168.1.109www.huawei.com

(2)把win7的首选DNS改为RHEL2-SQUID上squid服务器的外网IP,即192.168.1.109

(3)连通性测试

在RHEL1-WEB上:

第一次ping www.huawei.com

[root@RHEL1-WEB~]# ping www.huawei.com

PING www.huawei.com(10.1.1.2) 56(84) bytes of data.

64 bytes from10.1.1.2: icmp_seq=1 ttl=64 time=0.594 ms

64 bytes from10.1.1.2: icmp_seq=2 ttl=64 time=0.069 ms

第二次ping www.huawei.com

[root@RHEL1-WEB~]# ping www.huawei.com

PING www.huawei.com(10.1.1.4) 56(84) bytes of data.

64 bytes from10.1.1.4: icmp_seq=1 ttl=64 time=0.108 ms

64 bytes from10.1.1.4: icmp_seq=2 ttl=64 time=0.039 ms

第三次ping www.huawei.com

[root@RHEL1-WEB~]# ping www.huawei.com

PING www.huawei.com(10.1.1.3) 56(84) bytes of data.

64 bytes from10.1.1.3: icmp_seq=1 ttl=64 time=0.049 ms

64 bytes from10.1.1.3: icmp_seq=2 ttl=64 time=0.039 ms

64 bytes from10.1.1.3: icmp_seq=3 ttl=64 time=0.041 ms

通过连续三次ping,发现返回的IP都不一样,由此可知通过DNS的轮询配置实现了负载均衡(连续三次访问web,squid分别把请求送给了三台web,依次循环往复,减少了一台web的压力)

在RHEL2-SQUID上同样可以得出上述结果!

在win7上:

C:\Users\guoyin>pingwww.huawei.com

正在 Ping www.huawei.com [192.168.1.109]具有 32 字节的数据:

来自192.168.1.109 的回复: 字节=32 时间=5ms TTL=64

来自192.168.1.109 的回复: 字节=32 时间<1ms TTL=64

来自192.168.1.109 的回复: 字节=32 时间<1ms TTL=64

来自192.168.1.109 的回复: 字节=32 时间<1ms TTL=64

C:\Users\guoyin>pingweb1.huawei.com

正在 Ping web1.huawei.com [10.1.1.2] 具有 32 字节的数据:

请求超时。

请求超时。

请求超时。

说明:在外网上ping www.huawei.com时,返回的IP是squid服务器的外网IP,而直接ping内网的web服务器时ping不通。由此可知隐藏了内网的web站点,实现了代理。

(4)在浏览器上测试

至此,测试成功。说明squid服务器成功搭建,能够实现对内网web加速!

转载于:https://blog.51cto.com/zlong37/1393727

squid反向代理(实现缓存)加速web相关推荐

  1. squid反向代理作为web前端内容缓存器及局域网内客户机通过代理服务器上网

    反向代理服务器有两种传输模式: 1.同步模式:(如:squid)用户发起请求,请求立即被转到后端的服务器,于是在浏览器和后端服务器之间就建立了一个连接,在请求完成前这个连接是一直存在的. 2.异步模式 ...

  2. 利用 squid 反向代理提高网站性能

    本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性.安全性方面有很好的用途.作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术, ...

  3. 利用Squid反向代理搭建CDN缓存服务器加快Web访问速度

    案例: Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入 访问用户:电信宽带用户.移动宽带用户 出现问题:电信用户打开www.abc.com正常,移动用户打 ...

  4. Squid反向代理加速WEB

    简介: Linux 下著名代理软件Squid, 通常被用作上网代理,比如代理内网的Web服务,起到加速浏览的作用,一般可以设为透明代理. 透明代理设置主要有: ACL设置 acl all src 0. ...

  5. Linux下DNS轮询与Squid反向代理结合

    一.安装反向代理服务器 1.下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5- ...

  6. Squid 反向代理服务器配置

    Squid 反向代理服务器配置 简介: Squid 反向代理常用于服务器端,客户端访问 Squid 代理服务器的 80 端口,Squid 代理服务器根据配置去请求后端的 web 服务器,    然后将 ...

  7. Squid服务器应用(Squid传统代理、Squid透明代理、ACL访问控制、Squid日志分析、Squid反向代理)

    文章目录 一.缓存代理概述 二.Squid代理服务器 三.代理的工作机制 四.Squid代理的类型 五.部署Squid代理服务器步骤 (一).安装Squid服务 (二).构建传统代理服务器 (三).构 ...

  8. Squid ----反向代理模式

    Squid ----反向代理模式 一:定义 ​ Squid作为代理服务软件,其主要功能是使用代理上网可以节约紧缺的IP地址资源,而且可以阻断外部主机对内部主机的访问,有一定的安全性,但是如果想让互联上 ...

  9. 部署nginx反向代理及缓存

    第一,   nginx 的介绍 1 nginx 从0.7.48 版本后凯斯,支持烈士squid的缓存功能.该缓存是把URL及相关组合当作key,然后用md5编码哈希后保存在硬盘上,因此nginx 支持 ...

  10. 网站渗透测试服务 squid反向代理代码执行漏洞的挖掘

    在对网站进行渗透测试的时候,发现很多网站都在使用squid反向代理系统,该系统存在可以执行远程代码的漏洞,很多客户找我们SINE安全做渗透测试服务的同时,我们会先对客户的网站进行信息搜集工作,包括域名 ...

最新文章

  1. Http中涉及到的知识点总结
  2. PostgreSQL在何处处理 sql查询之九
  3. shadow dom一个最简单的例子
  4. 大话Fragment管理
  5. Spark之SparkStreaming数据源
  6. pycharm搭建spark环境
  7. 新颖性搜索(Novelty Search,NS)算法实践——利用NS算法解决迷宫导航问题
  8. 数据库--sql查询某一时间段数据
  9. python pip语句
  10. 对话海尔CEO张瑞敏
  11. C++11新特性 - 侯捷
  12. 通用样式 -表格的每行的复选框选中打印,清除已勾选
  13. 硬核干货:网易云音乐如何做产品创新
  14. 图:邻接矩阵表示法创建无向图并深度优先搜索遍历
  15. 后台管理系统中的CRUD【以用户维护为例】
  16. 如何监测内存泄漏(引用自网络)
  17. js+css让背景图片动起来
  18. 不卷大厂了,78位高校青年教师晒出工资
  19. Myth源码解析系列之五- 服务启动源码解析
  20. leaflet中文API说明

热门文章

  1. FFTW、Eigen库在VisualStudio中的导入和使用
  2. linux常用管理命令
  3. 更新版-梳理前端开发使用eslint和prettier来检查和格式化代码问题
  4. portal商品展示功能逻辑
  5. python多线程加锁异步处理装饰器
  6. c# 拼接lambda表达式 (转载)
  7. 【OPENGL】第三篇 着色器基础(一)
  8. 内存中OLTP(Hekaton)的排序警告
  9. 读《编程之道》-对于程序员的抽象描述
  10. UM功能实现和配置技巧(上)--语音邮件、传真功能