作 者 戴专 一Squid入门 .Squid是什么? Squid是一种用来缓沖Internet数据的软件它是这样实现其功能的接受来自人们需要下载的目标(object)的请求并适当地处理这些请求也就是说如果一个人想下载一web页面他请求Squid为他取得这个页面Squid随之连接到远程服务器(比如)并向这个页面发出请求然后Squid显式地聚集数据到客户端机器而且同时复制一份当下一次有人需要同一页面时Squid可以简单地从磁盘中读到它那样数据迅即就会传输到客户机上当前的Squid可以处理HTTPFTPGOPHERSSL和WAIS等协议但它不能处理如POPNNTPRealAudio以及其它类型的东西 .Internet缓沖的一些概念 你可能会想到一些问题缓沖有多大的用处?什么时候目标(object)应该或者不应该被缓沖?例如缓沖信用卡号码是完全不适合的脚本文件的执行结果在远程服务器端站点经常更新(象)或者甚至站点不允许缓沖这些情况也都是不适合缓沖的 Squid处理各种情况是不错的(当然这需要远程站点按标准形式工作) 可执行的cgibin脚本文件不被缓沖返回正确页眉的页面是在一段限制了的时间内被缓沖而且你可以规定特殊的规则以确定什么是可以或不可以被缓沖的还有缓沖的时间为多长 谈到缓沖的用处有多大这要看Internet的容量大小各有不同对于小型的缓沖区(几转磁盘空间)来说返回值非常高(达到%)这个空间缓沖经常访问的站点如netscapecnn和其它一些类似情况的站点如果你增加一倍缓沖的磁盘空间但你不会成倍增加你的命中率这是因为你开始缓沖网络中剩余部分时这些通常时很大的而且很少被访问一个非常大的高速缓沖区有转左右可能返回值仍小于%除非你对保存数据的时间长短经常改变(一般地你不要分配转的磁盘空间因为页面很快就会过时应该被删除掉) 我们在这里说的目标(object)指的是可保存的web页面或其它类似的可下载页面(ftp文件或目录内容也称为目标(object)) .Squid运行在什么系统上? Squid可运行在大多数Unix和OS/版本的系统之上已知的可工作的有 AIXDigital UnixFreeBSDHPUXIrixLinuxNetBSDNextstepSCOSolaris 二编译安装Squid .Squid的未编译版本 我不能保证你能发现所有的Squid的未编译版本在ftp:上你可以找到一些未编译的版本尽管它们可能不是最新的版本 Squid一般很容易编译这是因为它本身可以自动配置唯一真正的问题是是否在你的机器上有一个编译器这可能发生在你购买了商业OS但是它未包括标准的开发选项你可能考虑在这种情况下装一个GNU的编译器如果你在/usr/include下有必需的文件的话你另外一个选择可能是请求别人的帮助你也许需要查看tracker database以找到在你附近运行Squid的某人假定他们有适合的硬件他们很可能会帮助你的 . 开始编译之前 运行Squid的最好方法(在我看来)是创建一个特定的用户和组来运行它我用相同的名字创建了一个Squid用户和一个Squid组并设置用户的home目录为/usr/local/squid然后我用su 转到Squid用户这样文件就都由Squid以及Squid组所有(Squid用户主组必须为Squid)随后我下载Squid源文件到/usr/local/squid/src并解包 这可能不是最好的安装Squid到你的系统上的方法但是如果多个用户将使用squid你可以把他们都放在Squid组中(当然如果你不理解我所说的尽可以用你自己的名义去安装不要以root方式否则你将给你的机器带来安全上的危险) . 获得源码 Squid的源始站点是这里还有许多其它的镜像站点你可以考虑从你本地的镜像站点获得它或者在archie服务器上搜索一旦你已经下载了(一般放在/usr/local/squid/src/下)你可以用以下命令解压 gzip cd squidtargzfil | tar xv 或者 tar zxvf squidtargzfil 这将创建类似于以下行的目录/usr/local/squid/src/squid/(依版本而定) . 编译Squid 以下是编译Squid的一般指令你可能还要做其它的事以编译Squid到你的系统上通常你可以运行一个配置脚本文件它指明了你的系统设置和你机器上的标题文件这样在解压和解包文件后cd 到/usr/local/squid/src/squidversion/下并输入 /configure 这里假定你准备安装Squid到/usr/local/squid下你也可以用下面的方法修改你的安装目录 /configure prefix=/some/other/directory 然后你可能要敲入make 以及 如果编译一切正常时输入make install这将生成在后面将要描述的目录并安装文件到目录下 三Squid的基本配置 . 目录结构 Squid通常创建几个目录它们一般如下 /usr/local/squid /bin /cache /etc /logs/ /src (这是我们早些时候创建的) /bin包括Squid本身的程序以及其它程序如ftpget它可以被Squid用来执行各种功能 /cache/目录是实际缓沖数据的存放区你可能要考虑把剩余缓沖放到不同分区去或甚至是不同的磁盘它包含的目录如以下行的形式// // // 和// 这些又包括更多的子目录最终是缓沖的实际数据存储数据在多个目录下意味着从大的缓沖区取数据仍然很快因为你的操作系统要读一个包含个文件的目录会需要很长的时间 /etc/包含nf文件它是唯一的Squid配置文件 /logs/目录可能会很大特别是如果你包含同属时它们会查询你每一次连接这可以使你的log文件双倍增加注意在cache目录下也有一个/log/文件但是你不能删除或移动它它是上面讨论的/usr/local/squid/cache/目录的一个索引(这与IE的cache有些相似) /src/一般包括你运行Squid版本的源文件 . 基本配置 所有的Squid配置集中到一个文件nf下面将详细讨论仅作为一个缓沖代理服务器的Squid的配置而不是把它作为一个http加速器 以下是一个最基本的配置文件 #nf a very basic config file for squid #Turn logging to its lowest level debug_options ALL #defines a group (or Access Control List) that includes all IP #addresses acl all src / #allow all sites to use connect to us via HTTP http_access allow all #allow all sites to use us as a sibling icp_access allow all #test the following sites to check that we are connected dns_testnames uscedu loradoedu mitedu yaleedu #run as the squid user cache_effective_user squid squid #otherwise you can uncomment the below line and comment the one out # this will run as use nobody with the group nogrtoup cache_effective_user nobody nogroup 这个配置允许所有的人访问缓沖区并创建一个M的缓沖区使用M的内存保持最小型的logs而且存储所有文件到默认区域这一般指的是所有文件将以Squid用户Squid组的名义存储到/usr/local/squid/cache中所有客户请求将来自于端口并且所有内部缓沖(intercache)流量将走UDP端口注意这个配置文件允许所有人访问你的缓沖机器这可能不是你所希望的但是至少它可以正常工作 . 运行Squid Squid由一个脚本正常运行这个脚本在它的进程死掉后重启Squid这里有脚本的两种版本/usr/local/squid/bin/RunCache 和 /usr/local/squid/bin/RunAccel RunCache脚本一般在前台运行所以启动Squid输入以下内容 % /usr/local/squid/bin/RunCache& % 然后用以下命令查看主Squid log文件/usr/local/squid/logs/cachelog % more /usr/local/squid/logs/cachelog 你将看到Squid启动的相关信息如下行所示: // ::| Starting Squid Cache version for ipclinuxgnu // ::| With file descriptors available // ::| Initializing IP Cache 如果你没有看见任何关于FATAL错误的信息Squid现在就可以很高兴地在你的机器上运行了 下面将配置你的浏览器你可以好好地试一下哦! . 客户端软件的基本配置 以下是针对浏览器的基本配置 Netscape(以上版本) 从Edit菜单项中选择Preferences项在Advanced中Proxies页点击按钮进入Proxy配置手册然后再点击View按钮对每项你的Squid服务器支持的协议项(默认有HTTPFTP和gopher等)中填入Squid服务器的主机名或IP地址同时在Port栏中填入Squid服务器 |