最终实现目的
在客户端访问www1.kt.com/www2.kt.com通过Squid代理访问192.168.0.10并实现加速功能
在客户端访问www3.kt.com/www4.kt.com通过Squid代理访问192.168.0.20并实现加速功能
 
系统环境
   服务器名
     IP
   端口
         域名
  Squid
192.168.0.100
  80
      \
   DNS
192.168.0.100
  53
      \
   Web1
192.168.0.10
  81
 www1.kt.com/www2.kt.com
   Web2
192.168.0.20
  82
 www3.kt.com/www4.kt.com
 
添加squid系统用户和组
[root@zzh /]# groupadd squid
[root@zzh /]# useradd squid -g squid -s /sbin/nologin
 
设置权限
[root@zzh /]# chown -R squid.squid /usr/local/squid/var/
[root@zzh /]# chmod -R 775 /usr/local/squid/
 
编译安装
[root@zzh squid-3.0.STABLE19]# ./configure --prefix=/usr/local/squid --enable-arp-acl --enable-linux-netfilter --enable-auth --disable-internal-dns
make && make install
 
详细配置选项说明见手册
--enable-arp-acl
使用非标准的函数接口来执行ARP访问控制列表,默认被禁止,在linux或solaris可能用的上这功能
--enable-linux-netfilter
使用HTTP拦截功能,那么就激活该选项
--enable-auth=
支持哪种验证机制:basic、digest、ntlm,假如不带参数选项编译进程将增加对所有验证机制的支持
--disable-internal-dns
源码含两个不同的DNS解决方案内部的和外部的,内部查询是默认的,该选项是禁止内部功能
 
修改squid配置文件
[root@zzh /]# vim /usr/local/squid/etc/squid.conf
注意:一定要注意2.52.6以后的版本配置反向代理定义字段是有一些区别
OPTIONS FOR AUTHENTICATION
cache_peer 192.168.0.10 parent 81 0 no-query originserver weight=1 name=a
指定后端web服务器IP和端口80,weight设置权重
cache_peer 192.168.0.20 parent 82 0 no-query originserver weight=1 name=b
指定记录名为b,下面会定义
cache_peer_domain a www1.kt.com www2.kt.com
根据上面的设置定义a所指向的域名
cache_peer_domain b www3.kt.com www4.kt.com
意思就是访问www3.kt.com指向192.168.0.20
 
ACCESS CONTROLS
acl all src 0.0.0.0/0.0.0.0
定义all访问控制列表,内容为所有客户端
http_access allow all
对定义的all设置,允许所有客户访问,注意:位置很重要
 
NETWORK OPTIONS
http_port 80 vhost
设置squid监听端口,vhost是支持虚拟主机
 
MEMORY CACHE OPTIONS
cache_mem 512 MB
设置高速缓存为512MB,一般为实际内存的1/3
maximum_object_size_in_memory 512 KB
如果超过这个设置的值就不再内存中缓存而存入IO中
 
DISK CACHE OPTIONS
cache_dir ufs /usr/local/squid/var/cache 10240 16 256
硬盘缓存为10G,一级子目录16个,注意:依照上面创建的目录设置
maximum_object_size 1024 KB
单个文件最大缓存大小,超过这个大小将不缓存
cache_swap_low 80
最低缓存百分比,就是cache_mem所设置值的百分比
cache_swap_high 100
最高缓存比,缓冲容量达到所设百分比值时开始删除缓冲数据
 
LOGFILE OPTIONS
access_log /usr/local/squid/var/logs/access.log
设置访问日志,注意:依照上面创建的目录设置
cache_log /usr/local/squid/var/logs/cache.log
设置缓存日志,去掉注释
cache_store_log /usr/local/squid/var/logs/store.log
设置网页缓存日志
emulate_httpd_log on
使Squid按照Web服务器的格式创建访问记录,Web访问记录分析程序需要
 
ADMINISTRATIVE PARAMETERS
cache_effective_user squid
设置squid进程所有者,去掉注释
cache_effective_group squid
设置squid进程所属组,去掉注释
 
TIMEOUTS
half_closed_clients off
一旦从客户端返回no more data to read的信息,squid就立即关闭该连接
 
ICP OPTIONS
icp_port 3130
这是squint直接通信的端口,默认这个端口就是开着的
 
启动服务
[root@zzh /]# /usr/local/squid/sbin/squid -k parse
检查一下配置文件
[root@zzh /]# /usr/local/squid/sbin/squid -zX
初始化服务
[root@zzh /]# /usr/local/squid/sbin/squid -sD
启动squid服务
[root@zzh /]# /usr/local/squid/sbin/squid -k shutdown
关闭服务器,也可以用interrupt强制杀死服务
 
 
DNS服务器配置
让客户访问的www1.kt.com、www2.kt.com、www3.kt.com、www4.kt.com域名都指向192.168.0.100Squid服务器
[root@zzh /]# vim /etc/named.conf
options {
        directory       "/var/named";
};
zone "kt.com" IN {
        type master;
        file "kt.com.txt";
};
 
[root@zzh /]# vim /var/named/kt.com.txt
$TTL  86400
@     IN     SOA    zzh.kt.com.   root.kt.com. (
        2009101001;serial              
             28800;refresh
             14400;retry
           3600000;expire
            86400 );minimum
@     IN     NS     zzh.vf.com.
www1   IN     A      192.168.0.100
www2   IN     A      192.168.0.100
www3   IN     A      192.168.0.100
www4   IN     A      192.168.0.100
 
客户端配置
客户端DNS设置为上面配置的DNS服务器,也可以在hosts文件添加下面字段都可以
192.168.0.100        www1.kt.com
192.168.0.100        www2.kt.com
192.168.0.100        www3.kt.com
192.168.0.100        www4.kt.com