最终实现目的
在客户端访问 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.STABLE 19]# ./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.5 2.6 以后的版本配置反向代理定义字段是有一些区别
OPTIONS FOR AUTHENTICATION
cache_peer 192.168.0. 10 parent 8 1 0 no-query originserver weight= 1 name= a
指定后端 web 服务器 IP 和端口 80 ,weight设置权重
cache_peer 192.168.0. 2 0 parent 8 2 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. 2 0
 
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 -z X
初始化服务
[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.10 0Squid 服务器
[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.
www 1    IN     A       192.168.0.10 0
www 2    IN     A       192.168.0.10 0
www 3    IN     A       192.168.0.10 0
www 4    IN     A       192.168.0.10 0
 
客户端配置
客户端 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