您的位置:首页 > 运维架构 > 反向代理

Squid 代理服务器

2013-08-12 20:08 141 查看

        Squid 是Linux系统中最常用的一款开源代理服务软件,可以很好的实现HTTP和FTP以及DNS查询、SSL等应用的缓存代理,功能十分强大。

Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。

Squid用途:

  • 作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度;

  • 为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索;

  • 通过过滤流量帮助网络安全;

  • 局域网通过代理上网

  • Squid是一种在Linux系统下使用的优秀的代理服务器软件。

  • squid不仅可用在Linux系统上,还可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系统上。

  • Squid与Linux下其它的代理软件如Apache、Socks、TIS FWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议;

  • 用ipchains+Squid的解决方案,就可以获得通过缓存高性能的同时能够无缝的访问Internet。

Squid代理服务的优点:

  • 对于Web用户来说,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率;

  • Squid不仅支持HTTP协议,还支持FTP、gopher、SSL和WAIS等协议;

  • 和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求;

  • Squid支持SSL,支持访问控制;

  • 使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽;

  • Squid由一个主要的服务程序Squid,一个DNS查询程序dns server,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的dns server进程,而每一个dns server进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。

  • Squid使用访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。

Squid的硬件要求:内存一定要大,不应小于128M,硬盘转速越快越好,最好使用服务器专用SCSI硬盘,处理器要求不高,400MH以上既可。

一、Squid 服务基础:

缓存代理概述:作为应用层的代理服务软件,Squid 主要提供缓存加速、应用层过滤控制的功能。

a. Web代理的工作机制:

过程分析:

当客户机通过代理来请求web页面的时候,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需求的页面,则直接将缓存中的页面内容反馈给客户机;

如果缓存中没有客户机要访问的页面,则由代理服务器向Internet中发送访问请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机。

优点:

缓存网页对象;减少重复请求,从而提高客户机的web访问响应速度;由于客户机的Web请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定的保护作用。

Squid 代理服务器只能代理来自客户端http协议、ftp协议

b. 代理的基本类型:

根据实现方式不同,包括传统代理、透明代理两种常见的代理服务。

  • 传统代理:普通代理服务,在客户机的浏览器、QQ聊天工具、下载软件等程序中,必须手动设置代理服务器的地址和端口。对于网页浏览器来说,访问网站时的域名解析请求也会发给指定的代理服务器。

  • 透明代理:提供与传统代理相同的功能和服务,区别:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向,实际仍然交给代理服务器来处理。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器。

二、Squid的配置文件:

Squid服务端

系统服务:squid

主程序:/usr/sbin/squid

主配置文件:/etc/squid/squid.conf 

默认监听端口:TCP 3128

默认访问日志:/var/log/squid/access.log

常用配置项:

  • http_port 3128        ###用来指定代理服务监听的地址和端口(默认3128),如果服务器有多个网络接口,但只希望在其中一个IP地址上提供服务,还可以同时指定IP地址,eg:http_port192.168.10.1:3128

  • access_log /var/log/squid/access.log squid        ###指定代理服务的日志文件位置及记录格式(Squid),以便记录有哪些客户机通过代理访问过哪些web对象。

  • cache_mem 64 MB        ###指定缓存功能所使用的内存空间大小,便于保持访问较频繁的web对象。大小单位可使用MB,容量应为4的倍数,建议设为实际内存的1/4到1/3,具体根据服务器的性能和负载而定。

  • cache_dir ufs /var/spool/squid 100 16 256        ###指定缓存数据所使用的目录、容量、子目录个数等相关参数。其中ufs(UNIX文件系统)是Squid最早使用的缓存文件格式,也是Squid内建的存储格式类型;/var/spool/squid是缓存数据的默认存放目录;后面三个数字依次表示为缓存目录分配的磁盘空间大小(单位为MB)、一级子目录个数、二级子目录个数。当代理的用户数量较多时,可以适当增大缓存目录的大小。

  • visible_hostname proxy.localhost.localdomain.com            ###指定代理服务器本机的可见主机名,在Squid服务的初始化或者启动过程中可能会检查此项。建议设为服务器的完整主机名(FQDN)

  • dns_testnames www.51cto.com www.163.com          ###用来执行DNS解析测试,以确保Squid服务器自身的DNS查询功能正常。按从左到右的顺序,只要成功解析出一个域名,就不再测试后边的其他域名。如果管理员确认DNS解析没问题或者不需要DNS解析,建议注释掉此项配置,以加快服务器初始化的速度。

  • maximum_object_size4096 KB                ###允许保存到缓存空间的最大对象(文件)大小,一般以KB为单位,超过大小限制的文件将不会被缓存,而是直接转发给用户。默认的4096KB限制可以满足绝大部分的HTML页面、图片、Flash等web对象,可以适当增大参数值以支持更多的缓存。

  • reply_body_max_size 10240000 allow all            ###允许用户下载的最大文件大小,以字节(byte)为单位。默认设置为0字节表示不进行限制。其中,all为默认的访问控制列表名,针对任意地址的代理用户。

squid代理服务器的介绍以及基本信息就简单的阐述到这里,传统代理服务器及透明代理服务器的构建及ACL访问控制使用后续送上。

Squid传统代理、透明代理应用、ACL控制规则:http://wenzhongxiang.blog.51cto.com/6370734/1274670

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: