本人从事 Linux Nginx Mysql PHP 开发多年,联系v:luhuang2003 ,希望接触到更新的web开发软件,开此博客希望能把自己的经验和接触的东西与大家进行共享。
分类: Web开发
2013-02-22 18:12:58
环境 Centos
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
1、下载源文件:
并解压
2、安装相关软件:
yum -y install gcc-c++ net-snmp net-snmp-utils libtool 3、进入 squid-3.3.1 目录 编译squid 开始编译安装,使用命令 ./configure --prefix=/usr/local/squid --with-filedescriptors=20480 --enable-default-err-language="Simplify_Chinese" --enable-err-language="Simplify_Chinese" --enable-storeio="aufs,coss,diskd,ufs" --libexecdir=/usr/lib/squid./configure --prefix=/usr/local/squid --disable-carp --with-aufs-threads=32 --with-pthreads --enable-storeio=aufs,ufs,diskd --enable-disk-io='AIO,Blocking' --enable-removal-policies='heap,lru' --disable-wccp --enable-kill-parent-hack --disable-snmp --disable-poll --disable-select --with-aio --disable-ident-lookup --with-filedescriptors=65536 make make installConfigure选项
--prefix=/squid这里为squid的安装目录
--enable-kill-parent-hack关掉squid进程时连同父进程也一起关掉(enable表示开启此项功能,disable则表示关闭)
--enable-large-cache-files支持大的缓存文件
--with-large-files支持大的文件
--with-maxfd=344800覆盖的最大数量的filedescriptors
--enable-snmp简单网络管理协议(SNMP)是监视网络设备和服务器的流行方法。该选项导致编译过程去编译所有的SNMP相关的代码,包括一个裁切版本的CMU SNMP库
--disable-ident-lookups ident是一个简单的协议允许服务器利用客户端的特殊TCP连接来发现用户
--enable-carp Cache数组路由协议(CARP)用来转发丢失的cache到父cache的数组或cluster
--enable-async-io=160同步I/O是squid技术之一,用以提升存储性能。aufs模块使用大量的线程来执行磁盘I/O操作。该代码仅仅工作在linux和solaris系统中。=N_THREADS参数改变squid使用的线程数量 此处Io是有瓶颈限制的
----enable-storeio=ufs,aufs,diskd,null,coss Squid支持大量的不同存储模块。通过使用该选项,你告诉squid编译时使用哪个模块
--enable-epoll支持epoll的IO模式,2.6以上内核才具有
--enable-linux-netfilter netfilter是linux内核的包过滤器的名字
--enable-stacktraces某些系统支持在程序崩溃时,自动产生数据追踪。当你激活该功能后,如果squid崩溃,数据追踪信息被写到cache.log文件。这些信息对开发和程序bug调试有用
--enable-forward-log支持实验forward-log指令
--enable-referer-log该选项激活来自客户请求的HTTP referer日志
--enable-useragent-log该选项激活来自客户请求的HTTP用户代理头的日志
--enable-delay-pools延时池是squid用于传输形状或带宽限制的技术。该池由大量的客户端IP地址组成。当来自这些客户端的请求处于cache丢失状态,他们的响应可能被人工延迟
--enable-follow-x-forwarded-for当一个请求被另一些代理服务器转发时通过从http头中寻找X-Forwarded-For来发现直接或间接的客户端的IP地址
--enable-forw-via-db 支持forw/via数据库
--enable-default-err-language=Simplify_Chinese 该选项设置error_directory指令的默认值
--enable-err-languages="Simplify_Chinese English" squid支持定制错误消息,错误消息可以用多种语言报告。该选项指定复制到安装目录($prefix/share/errors)的语言
--without-system-md5不使用md5加密算法
--disable-internal-dns squid源代码包含两个不同的DNS解决方案,叫做“内部的”和“外部的”。内部查询是默认的,但某些人可能要使用外部技术。该选项禁止内部功能,转向使用旧的方式
4、修改目录权限 chown -R nobody:nobody /usr/local/squid/var 5、编辑 /usr/local/squid/etc/squid.conf 添加: cache_peer 机器的IP parent 81 0 no-query originserver # 我的httpd端口是81 cache_dir ufs /usr/local/squid/var/cache 50000 16 256 查找 http_port 3128 替换为 http_port 80 transparent 查找 http_access deny all 替换为 http_access allow all 5、创建缓存目录 /usr/local/squid/sbin/squid -z 6、然后启动squid,测试一下是否成功 /usr/local/squid/sbin/squid -NCd1 如果访问的时候出现: clientNatLookup: NF getsockopt(SO_ORIGINAL_DST) failed: (92) Protocol not available 解决办法 执行命令: modprobe ip_conntrack用ie测试一下,如果能看到中文的拒绝访问错误提示,就说明安装正确,并且已经使用.
以后就可以直接/usr/local/squid/sbin/squid & 后台运行即可。