一、简介
代理服务器英文全称是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. 代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
squid代理服务器工作在tcp/ip的应用层。
1.2 squid 分类
按照代理类型的不同,可以将squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。
普通代理:需要客户机在浏览器中指定代理服务器的地址、端口; 透明代理:适用于企业的网关主机(共享接入internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的web访问数据转交给代理服务程序处理; 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
官方地址:http://www.squid-cache.org/
参考文档:http://www.squid-cache.org/doc/config/
二、系统环境
操作系统:centos release 6.4 (final)
squid版本:squid-3.1.10-20.el6_5.3.x86_64
selinux=disabled
http service: stoped
三、安装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 n [%tl] "%rm %ru http/%rv" %hs %<st "%{referer}>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%%u65f6,开始清理旧的cache cache_swap_low 90 //cache目录清理到90%%u65f6停止。 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//管理员邮箱
关于acl的知识,大家可以自行百度查阅,其他更多高级选项,请参考官方文档:http://www.squid-cache.org/doc/config/。
注意:squid2.0 和squid3.0的差别还是很大的,如果配置完,启动squid不正确,请大家多多参考官方文档的相应版本说明。
五、普通代理服务
即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。
实验拓扑图如下:
5.1 配置squid 代理服务器ip地址
将eth1的ip地址修改为200.168.10.1
# ifconfig eth1 200.168.10.1
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
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地址
5.7 配置浏览器代理
打开浏览器(以ie为例,其他类似),菜单栏 -> 工具 -> internet 选项 -> 连接 -> 局域网设置 -> 代理服务器,按照以下格式设置。
5.8 测试
测试成功。
5.9 测试错误页面
在oracle vm virtualbox里,因为上面手动设置了ip地址,导致外网不能访问,刚好可以测试访问出错的页面。
可以看到在squid 配置文件里设置的参数在错误页面里的显示。
六、透明代理服务
适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的web访问数据转交给代理服务程序处理。
实验拓扑图如下:
6.1
机械键盘天梯图_2020机械键盘排行榜东至云服务器价格SEO优化大家都耳闻过,其实也不容易docker容器和镜像的关系是什么专注外贸建站教程和云服务器推荐服务器环境中配置为状态-虚拟主机/数据库问题上海云主机云服务器价格【SEO优化】SEO公司在被挂黑链的情况下,怎么快速处理