一、简介

代理服务器英文全称是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 %&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 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 修改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 -L -n

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

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

F. 保存

G. 设置iptables 开机启动

# chkconfig iptables on

6.4 修改客户端IP地址

将默认网关设置为squid 服务器的内网ip地址。

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

6.6 测试

透明代理测试成功。

七、反向代理服务

为Internet用户访问企业Web站点提供缓存加速。

实验拓扑图如下:

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服务

squid启动失败,因为上面设定了squid的监听端口是80,和系统的http服务冲突,所以要将http服务停掉。

7.5 squid 启动失败,将系统开机自启动的apache服务关闭。

7.6 测试

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

Web1:

Web2:

查看squid 的访问日志。

八、实际应用

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

实验拓扑图如下:

8.1 修改Web Server 主页

Web1:

# echo "<h1>www.squid.dev/192.168.1.18</h1>" > /var/www/html/index.html

Web2:

# echo "<h1>bbs.squid.dev/192.168.1.19</h1>" > /var/www/html/index.html

8.2 配置Squid

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 mchina_tang@qq.com

8.3 配置客户端

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

修改C:\Windows\System32\drivers\etc\hosts 文件

8.4 测试网络情况

8.5 测试www.squid.dev

8.6 测试bbs.squid.dev

8.7 查看squid 访问日志

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

# tailf /var/log/httpd/access.log

测试成功。

实战:

代理服务器配置:

==========================

yum -y install squid

vi /etc/squid/squid.cnf

---------------------------------------------------------

[root@ipp3-p-nginx01 squid]# cat /etc/squid/squid.conf
dns_nameservers 8.8.8.8
dns_nameservers 114.114.114.114
http_access allow all
http_port 3128
cache_mem 600 MB
visible_hostname yum.com

---------------------------------------------------------

service squid start

service squid stop

service squid restart

squidclient mgr:info

squidclient  http://www.baidu.com

客户端(被代理)配置:

==========================

1.yum

vi /etc/yum.conf

------------------------------------------

proxy=http://172.168.173.2:3128
proxy=https://172.168.173.2:3128

------------------------------------------

2.wget

vi /etc/wgetrc

------------------------------------------

http_proxy = http://172.168.173.2:3128/

use_proxy = on

------------------------------------------

Squid代理服务器的安装与配置的更多相关文章

  1. CentOS 6.4下Squid代理服务器的安装与配置,反向代理

    CentOS 6.4下Squid代理服务器的安装与配置 一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件 ...

  2. 【转载】CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  3. CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

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

    代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息.Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一 ...

  5. [转]CentOS 6.4下Squid代理服务器的安装与配置

    一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用 ...

  6. CentOS 6.4下Squid代理服务器的安装与配置(转)

    add by zhj: 其实我们主要还是关注它在服务器端使用时,充当反向代理和静态数据缓存.至于普通代理和透明代理,其实相当于客户端做的事,和服务端没有什么关系.另外,Squid的缓存主要是缓存在硬盘 ...

  7. CentOS 6.7 下 Squid 代理服务器 的 安装与配置

    GFW 封锁了 HTTP/Socks5 代理,HTTP 代理是关键词过滤,Socks5 代理则是封锁协议.不过某些特殊的低端口并没有这么处理,已知的有 21,25. 20端口已经被封杀,21端口目前会 ...

  8. CentOS 6.5下Squid代理服务器的安装与配置

    1.1   缓存代理概述 作为应用层的代理服务器软件,squid主要提供缓存加速,应用层过滤控制的功能. 1.  代理的工作机制 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存 ...

  9. Nginx反向代理服务器的安装与配置

    Nginx反向代理服务器的安装与配置 时间:10月19日 Nginx反向代理有不少需要我们解决的问题,其中有不少问题是基于安装上的问题,在安装完成后的相关调试也让很多人头疼不已.下面就向大家介绍有关于 ...

随机推荐

  1. iOS开发 ReactiveCocoa入门教程 第二部分

    ReactiveCocoa 是一个框架,它允许你在你的iOS程序中使用函数响应式(FRP)技术.加上第一部分的讲解,你将会学会如何使用信号量(对事件发出数据流)如何替代标准的动作和事件处理逻辑.你也会 ...

  2. 浅谈AJAX的基本原理和原生AJAX的基础用法

    一.什么是AJAX? AJAX,即"Asynchronous Javascript And XML",翻译为异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技 ...

  3. 解决Mac下MySQL登录问题

    sudo /usr/local/mysql/support-files/mysql.server stop sudo mysqld_safe --skip-grant-tables mysql-u r ...

  4. 错误信息:System.Resources.MissingManifestResourceException: 未能找到任何适合于指定的区域或非特定区域性的资源。请确保在编译时已将“****.****.Resource.resources”正确嵌入或链接到程序集"****",或者确保所有需要的附属程序集都可加载并已进行了完全签名

    在网上搜索了N久都没看到几篇解决的文章,最后在不懈的努力下终于解决了,所以决定写下解决方法方便以后遇到同样问题的朋友: 其实这个错误的主要问题就是没有找到需要的资源文件(该文件为Resources.r ...

  5. 上下文菜单项(contextMenu)----长按按钮弹出菜单项

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. Winform开发框架之系统登录实现

    在业务系统的操作过程中,有时候,用户需要切换用户进行重新登录,这种情况有时候是因为一个人管理多个用户账号,希望通过不同的账号登录进行管理不同的资料,另一种情况是酒店的换班操作,另一个人接替前面的人进行 ...

  7. [FTP] Pure-FTPd SSL/TLS 配置方法

    一.准备 & 安装启用 Pure-FTPd SSL/TLS 连接方式在安装时需要检查以下两项:1.系统中是否已经安装了 openssl 和 openssl-devel 包?2.在编译 Pure ...

  8. 黑马程序员——OC语言 内存管理

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)计数器 每个对象内部都保存了一个与之相关联的整数,称为引用计数器,当 ...

  9. CPU标志寄存器

    这个标志寄存器似乎很重要,不干掉它,中断这玩意还进行不下去了,但是过于复杂,都是一些跟计算结果相关的位,头痛 (这是别人写的一篇非常好的关于标志寄存器的文章http://blog.csdn.net/w ...

  10. poj3268 最短路

    //Accepted 1124 KB 0 ms #include <cstdio> #include <cstring> #include <iostream> # ...