阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下Squid代理缓存服务环境部署

151次阅读
没有评论

共计 6149 个字符,预计需要花费 16 分钟才能阅读完成。

代理服务器英文全称是 Proxy Server,其功能就是代理网络用户去取得网络信息。

Squid 是一个缓存 Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向 Squid 发出一个申请,要 Squid 代替其进行下载,然后 Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快。Squid 可以代理 HTTP、FTP、GOPHER、SSL 和 WAIS 等协议并且 Squid 可以自动地进行处理,可以根据自己的需要设置 Squid,使之过滤掉不想要的东西。

一、工作流程

当代理服务器中有客户端需要的数据时:
1)客户端向代理服务器发送数据请求;
2)代理服务器检查自己的数据缓存;
3)代理服务器在缓存中找到了用户想要的数据,取出数据;
4)代理服务器将从缓存中取得的数据返回给客户端。

当代理服务器中没有客户端需要的数据时:
1)客户端向代理服务器发送数据请求;
2)代理服务器检查自己的数据缓存;
3)代理服务器在缓存中没有找到用户想要的数据;
4)代理服务器向 Internet 上的远端服务器发送数据请求;
5)远端服务器响应,返回相应的数据;
6)代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

Linux 下 Squid 代理缓存服务环境部署

 

Squid 代理服务器工作在 TCP/IP 的应用层:

Linux 下 Squid 代理缓存服务环境部署

二、squid 分类
按照代理类型的不同,可以将 Squid 代理分为正向代理和反向代理。

正向代理 根据实现方式的不同,又可以分为普通代理和透明代理。
1)普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
2)透明代理:适用于企业的网关主机(共享接入 Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的 Web 访问数据转交给代理服务程序处理;

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

三、squid 代理缓存环境部署过程:
1)关闭 selinux 和 iptables
[root@server~]# vim /etc/sysconfig/selinux
…….
SELINUX=disabled
[root@server~]# /etc/init.d/iptables stop

2)检查 squid 软件是否安装
[root@server~]# rpm -qa|grep squid

3)如果未安装,则使用 yum 方式安装
[root@server~]# yum -y install squid

4) 设置开机自启动, 在 3、5 级别上自动运行 squid 服务
[root@server~]# chkconfig –level 35 squid on

5)squid 服务器的配置文件说明
squid 的主配置文件是 /etc/squid/squid.conf,所有 squid 的设定都是在这个文件里配置,这里 squid 配置如下:
[root@server~]# vim /etc/squid/squid.conf
http_port 3128 # 设置监听的 IP 与端口号
cache_mem 64 MB   # 额外使用内存量,可根据你的系统内存在设定,一般为实际内存的 1 /3. 比如这里内存是 200M, 这里设置 1 / 3 就是 64MB
maximum_object_size 4 MB # 设置 squid 磁盘缓存最大文件,超过 4M 的文件不保存到硬盘
minimum_object_size 0 KB # 设置 squid 磁盘缓存最小文件
maximum_object_size_in_memory 4096 KB # 设置 squid 内存缓存最大文件,超过 4M 的文件不保存到内存
cache_dir ufs /var/spool/squid 100 16 256 # 定义 squid 的 cache 存放路径、cache 目录容量(单位 M)、一级缓存目录数量、二级缓存目录数量
logformat combined %&gt;a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st “%{Referer}>h” “%{User-Agent}&gt;h” %Ss:%Sh #log 文件日志格式
access_log /var/log/squid/access.log combined #log 文件存放路径和日志格式
cache_log /var/log/squid/cache.log # 设置缓存日志
logfile_rotate 60 #log 轮循 60 天
cache_swap_high 95 #cache 目录使用量大于 95% 时,开始清理旧的 cache
cache_swap_low 90 #cache 目录清理到 90% 时停止
acl localnet src 192.168.1.0/24 # 定义本地网段
http_access allow localnet # 允许本地网段使用
http_access deny all # 拒绝所有
visible_hostname squid.david.dev # 主机名
cache_mgr wangshibo@huanqiu.com # 管理员邮箱

四、普通代理服务
即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。
实验拓扑图如下:

Linux 下 Squid 代理缓存服务环境部署

1)配置 Squid 代理服务器 IP 地址
将 eth1 的 IP 地址修改为 200.168.10.1
[root@server~]# ifconfig eth1 200.168.10.1

2) 编辑 squid 主配置文件 /etc/squid/squid.conf
[root@server~]# vim /etc/squid/squid.conf
http_port 3128
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
visible_hostname squid.david.dev
cache_mgr wangshibo@huanqiu.com

3) 初始化
[root@server~]# squid –z

4) 启动 Squid
[root@server~]# /etc/init.d/squid start

5) 配置 Web 服务器
安装 Apache
[root@server~]# rpm -qa|grep httpd
[root@server~]# yum -y install httpd
启动 Apache 并加入开机启动
[root@server~]# /etc/init.d/httpd start
[root@server~]# chkconfig httpd on
创建 index.html
[root@server~]# echo “<h1>Squid-Web1/200.168.10.2</h1>” > /var/www/html/index.html
修改 Web 服务器 IP 地址
将 web 服务器的 IP 地址修改为 200.168.10.2
[root@server~]# ifconfig eth0 200.168.10.2

6) 配置客户端 IP 地址

Linux 下 Squid 代理缓存服务环境部署

 

7) 配置浏览器代理
打开浏览器(以 IE 为例,其他类似),菜单栏 -> 工具 -> Internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。

Linux 下 Squid 代理缓存服务环境部署

8) 测试

Linux 下 Squid 代理缓存服务环境部署

 

五、透明代理服务
适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过 iptables 将客户机的 Web 访问数据转交给代理服务程序处理。
实验拓扑图如下:

Linux 下 Squid 代理缓存服务环境部署

1)修改 squid 主配置文件 /etc/squid/squid.conf
[root@server~]# vim /etc/squid/squid.conf
http_port 3128 transparent
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
visible_hostname squid.david.dev
cache_mgr wangshibo@huanqiu.com

在 http_port 3128 后添加 transparent 关键字。

2) 重启 squid 服务
[root@server~]# /etc/init.d/squid reload

3)添加 iptables 规则,把内部的 http 请求重定向到 3128 端口
启动 iptables 服务
[root@server~]# /etc/init.d/iptables start
清除现有 iptables filter 表规则
[root@server~]# iptables -F
保存 iptables 设置
[root@server~]# /etc/init.d/iptables save
查看 nat 表设置
[root@server~]# iptables -t nat -L -n
在 nat 表中新增一条规则
[root@server~]# iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp –dport 80 -j REDIRECT –to-port 3128
保存 iptables
[root@server~]# /etc/init.d/iptables save

设置 iptables 开机启动
[root@server~]# chkconfig iptables on

4)修改客户端 IP 地址
将默认网关设置为 squid 服务器的内网 ip 地址。

Linux 下 Squid 代理缓存服务环境部署

5)在浏览器中,取消代理设置

Linux 下 Squid 代理缓存服务环境部署

6)测试

Linux 下 Squid 代理缓存服务环境部署

透明代理测试成功。

 

六、反向代理服务
为 Internet 用户访问企业 Web 站点提供缓存加速。
实验拓扑图如下:

Linux 下 Squid 代理缓存服务环境部署

 

 

1)关闭防火墙
# /etc/init.d/iptables stop
2)修改 Web Server 主页
Web1:
[root@server~]#echo “<h1>Squid-Web1/192.168.1.18</h1>” > /var/www/html/index.html

Web2:
[root@server~]# echo “<h1>Squid-Web1/192.168.1.19</h1>” > /var/www/html/index.html

3)配置 squid
[root@server~]# vim /etc/squid/squid.conf
http_port 80 accel vhost
http_access allow all
cache_peer 192.168.1.18 parent 80 0 originserver round-robin weight=1
cache_peer 192.168.1.19 parent 80 0 originserver round-robin weight=1
visible_hostname squid.david.dev
cache_mgr mchina_tang@qq.com

4) 启动 Squid 服务(在此启动会报错,是因为上面设置了 80 端口,和 http 端口冲突。关闭 http 即可成功启动这里的 squid)
[root@server~]# /etc/init.d/squid reload

5) 测试
squid 采用了 round-robin,所以客户端的访问将轮询两台 web 服务器,采用 “Ctrl + F5” 来深度刷新测试。
Web1:

Linux 下 Squid 代理缓存服务环境部署

Web2:

Linux 下 Squid 代理缓存服务环境部署

6)查看 squid 的访问日志。

Linux 下 Squid 代理缓存服务环境部署

 

七、实际应用
下面实验将模拟通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡。客户端在浏览器地址栏中输入 www.squid.dev,将访问 192.168.1.18 这台机器,访问 bbs.squid.dev,将访问 192.168.1.19 这台机器。
实验拓扑图如下:

Linux 下 Squid 代理缓存服务环境部署

 

1)修改 Web Server 主页
Web1:
[root@server~]# echo “<h1>www.squid.dev/192.168.1.18</h1>” > /var/www/html/index.html

Web2:
[root@server~]# echo “<h1>bbs.squid.dev/192.168.1.19</h1>” > /var/www/html/index.html

2)配置 Squid
[root@server~]# vim /etc/squid/squid.conf
http_port 80 accel vhost
http_access allow all
cache_peer 192.168.1.18 parent 80 0 originserver name=www
cache_peer 192.168.1.19 parent 80 0 originserver name=bbs
cache_peer_domain www www.squid.dev
cache_peer_domain bbs bbs.squid.dev
visible_hostname squid.david.dev
cache_mgr wangshibo@huanqiu.com

3) 配置客户端
这里可以使用 DNS 服务来解析,这里我们为了方便,就在 hosts 文件里直接指定。

Linux 下 Squid 代理缓存服务环境部署

4) 测试网络情况 

Linux 下 Squid 代理缓存服务环境部署

5) 测试 www.squid.dev

Linux 下 Squid 代理缓存服务环境部署

6) 测试 bbs.squid.dev

Linux 下 Squid 代理缓存服务环境部署

7) 查看 squid 访问日志

Linux 下 Squid 代理缓存服务环境部署

8) 查看两台服务器的 apache 访问日志

[root@server~]# tailf /var/log/httpd/access.log

Linux 下 Squid 代理缓存服务环境部署

测试成功。

配置 Squid 代理 http 和 rsync http://www.linuxidc.com/Linux/2013-05/84642.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://www.linuxidc.com/Linux/2014-04/99465.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/2016-10/136594.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6149字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中