最终实现目的
在客户端访问
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