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

CentOS6 Squid代理服务器的安装与配置

33次阅读
没有评论

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

本文由 LinuxProbe.Com 团队成员 逄增宝 整理发布,原文来自:David Camp。

一、简介

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

1.1 工作流程

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

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

1.2 Squid 分类

按照代理类型的不同,可以将 Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。
• 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
• 透明代理:适用于企业的网关主机(共享接入 Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的 Web 访问数据转交给代理服务程序处理;
• 反向代理:是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

二、系统环境

操作系统:CentOS release 6.5
Squid 版本:squid-3.1.10-20.el6_5.3.x86_64
关闭 httpd
关闭防火墙

三、安装 Squid 服务
3.1 检查 squid 软件是否安装
# rpm -qa|grep squid
3.2 如果未安装,则使用 yum 方式安装
# yum -y install squid
3.3 设置开机自启动
# chkconfig --level 35 squid on             // 在 3、5 级别上自动运行 squid 服务
四、squid 服务器的配置文件说明
squid 的主配置文件是 /etc/squid/squid.conf,所有 squid 的设定都是在这个文件里配置,下面是一些常用的配置选项。
http_port 3128      // 设置监听的 IP 与端口号

cache_mem 64 MB      // 额外提供给 squid 使用的内存,squid 的内存总占用为 X * 10+15+“cache_mem”,其中 X 为 squid 的 cache 占用的容量(以 GB 为单位),// 比如下面的 cache 大小是 100M,即 0.1GB,则内存总占用为 0.1*10+15+64=80M,推荐大小为物理内存的 1 /3-1/ 2 或更多。
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 %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h""%{User-Agent}>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 example@test.com  // 管理员邮箱
五、普通代理服务

即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。
实验拓扑图如下:
CentOS6 Squid 代理服务器的安装与配置

5.1 配置 Squid 代理服务器 IP 地址

将 eth1 的 IP 地址修改为 200.168.10.1

# ifconfig eth1 200.168.10.1

CentOS6 Squid 代理服务器的安装与配置

5.2 编辑 squid 主配置文件 /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 mchina_tang@qq.com
5.3 初始化
# squid -z

CentOS6 Squid 代理服务器的安装与配置

5.4 启动 Squid
# /etc/init.d/squid start
5.5 配置 Web 服务器

A. 安装 Apache

# rpm -qa|grep httpd
# yum -y install httpd

B. 启动 Apache 并加入开机启动

# /etc/init.d/httpd start
# chkconfig httpd on

C. 创建 index.html

# echo "<h1>Squid-Web1/200.168.10.2</h1>" > /var/www/html/index.html

D. 修改 Web 服务器 IP 地址
将 web 服务器的 IP 地址修改为 200.168.10.2

# ifconfig eth0 200.168.10.2
5.6 配置客户端 IP 地址

CentOS6 Squid 代理服务器的安装与配置

5.7 配置浏览器代理

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

5.8 测试

CentOS6 Squid 代理服务器的安装与配置

六、透明代理服务

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

6.1 修改 squid 主配置文件 /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 mchina_tang@qq.com

在 http_port 3128 后添加 transparent 关键字。

6.2 reload

reload 让上面的配置生效。

# /etc/init.d/squid reload
6.3 添加 iptables 规则,把内部的 http 请求重定向到 3128 端口

A. 启动 iptables 服务

# /etc/init.d/iptables start

B. 清除现有 iptables filter 表规则

# iptables -F

C. 保存 iptables 设置

# /etc/init.d/iptables save

D. 在 nat 表中新增一条规则

# iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

E. 保存

# /etc/init.d/iptables save
6.4 修改客户端 IP 地址

将默认网关设置为 squid 服务器的内网 ip 地址。
CentOS6 Squid 代理服务器的安装与配置

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

CentOS6 Squid 代理服务器的安装与配置

七、反向代理服务

为 Internet 用户访问企业 Web 站点提供缓存加速。
实验拓扑:
CentOS6 Squid 代理服务器的安装与配置

7.1 关闭防火墙
# /etc/init.d/iptables stop
7.2 修改 Web Server 主页
Web1:
# echo "<h1>Squid-Web1/192.168.1.18</h1>" > /var/www/html/index.html

Web2:
# echo "<h1>Squid-Web1/192.168.1.19</h1>" > /var/www/html/index.html
7.3 配置 squid
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
7.4 启动 Squid 服务

CentOS6 Squid 代理服务器的安装与配置
squid 启动失败,因为上面设定了 squid 的监听端口是 80,和系统的 http 服务冲突,所以要将 http 服务停掉,然后再启动 squid。

7.6 测试

squid 采用了 round-robin,所以客户端的访问将轮询两台 web 服务器,采用 “Ctrl + F5” 来深度刷新测试。
Web1:
CentOS6 Squid 代理服务器的安装与配置
Web2:
CentOS6 Squid 代理服务器的安装与配置

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

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