squid的反向代理
最终实现目的
在客户端访问www1.kt.com/www2.kt.com通过Squid代理访问192.168.0.10并实现加速功能
在客户端访问www3.kt.com/www4.kt.com通过Squid代理访问192.168.0.20并实现加速功能
系统环境 服务器名 IP 端口 域名
Squid192.168.0.100 80 \
DNS192.168.0.100 53 \
Web1192.168.0.10 81 www1.kt.com/www2.kt.com
Web2192.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.5和2.6以后的版本配置反向代理定义字段是有一些区别
OPTIONS FOR AUTHENTICATIONcache_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 OPTIONShttp_port 80 vhost设置squid监听端口,vhost是支持虚拟主机
MEMORY CACHE OPTIONScache_mem 512 MB设置高速缓存为512MB,一般为实际内存的1/3
maximum_object_size_in_memory 512 KB如果超过这个设置的值就不再内存中缓存而存入IO中
DISK CACHE OPTIONScache_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 OPTIONSaccess_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 PARAMETERScache_effective_user squid设置squid进程所有者,去掉注释
cache_effective_group squid设置squid进程所属组,去掉注释
TIMEOUTShalf_closed_clients off一旦从客户端返回no more data to read的信息,squid就立即关闭该连接
ICP OPTIONSicp_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.
web1 IN A 192.168.0.100
web2 IN A 192.168.0.100
web3 IN A 192.168.0.100
web4 IN A 192.168.0.100
客户端配置
客户端DNS设置为上面配置的DNS服务器,也可以在hosts文件添加下面字段都可以
192.168.0.100 web1.kt.com
192.168.0.100 web2.kt.com
192.168.0.100 web3.kt.com
192.168.0.100 web4.kt.com
- 最新评论