1.http_port
定义squid监听HTTP客户连接请求的端口。缺省是3128,如果使用HTTPD加速模式则为80。可以指定 多个端口,但是所有指定的端口都必须在一条命令行上。
2.cache_mem
指定squid可以使用的内存理想值,建议设为内存的1/3.
3.cache_dir Directory-Name Mbytes Level1 Level2
指定squid用来存储对象的交换空间的大小及其目录结构。可以用下面的公式来估算系统所需要的 子目录数目。
已知量:
DS = 可用交换空间总量(单位KB)/ 交换空间数目
OS = 平均每个对象的大小= 20k
NO = 平均每个二级子目录所存储的对象数目 = 256
未知量:
L1 = 一级子目录的数量
L2 = 二级子目录的数量
计算公式:
L1 x L2 = DS / OS / NO
注意这是个不定方程,可以有多个解。
4.maximum_object_size
大于该值得对象将不被存储。如果要提高访问速度,就降低该值;如果想最大限度的节约带宽,降低成本,就增加该值。
5.dns_nameservers
定义Squid进行域名解析时使用的域名服务器。
6.acl
定义访问控制列表。定义语法为:
acl aclname acltype string ...
acl aclname acltype "file" ...
7.http_access
根据某个访问控制列表允许或禁止某一类用户访问。
运行Squid
配置并保存好squid.conf后,就可以启动、停止和重新启动Squid:
/etc/rc.d/init.d/squid start
/etc/rc.d/init.d/squid stop
/etc/rc.d/init.d/squid restart
可以通过ps命令查看Squid服务是否已经正常启动:
ps -A |grep squid
如果出现以下信息:
6573 ? 00:00:00 squid
6574 ? 00:00:00 squid
则表明Squid服务已经正常启动。
客户端的配置
将某台终端设置成内部地址,并将该终端的DNS服务器设置为代理服务器的DNS服务,在内部地址和标准地址之间作一个路由。在浏览器里设置代理服务器地址为Squid代理服务器的地址,就可以通过代理服务器上网了。
一个实例
假设有这样的应用环境,网络中有一台拨号服务器为用户提供拨号接入服务,且运行有Squid实现的代理服务器,其IP地址为192.168.2.32。拨号用户得到一个内部IP,地址范围为192.168.2.1- 192.168.2.30。
1.配置squid.conf
http_port 80
cache_mem 32 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
cache_dir /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_dns_program /usr/lib/squid/dnsserver
dns_nameservers 192.168.2.32
unlinkd_program /usr/lib/squid/unlinkd
acl all src 0.0.0.0/0.0.0.0
acl allow_ip src 192.168.2.1/255.255.255.0
acl manager proto cache_object
acl localhost src 192.168.2.32/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow allow_ip
cache_effective_user squid
cache_effective_group squid
下面两个选项是用来定义squid加速模式的。用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。采用这种模式时,Squid就取消了缓存及ICP功能,假如需要这些功能,必须设置 httpd_accel_with_proxy选项。
httpd_accel_host virtual
httpd_accel_port 80
下面两个选项在透明代理模式下是必须设置成on的。在该模式下,Squid既是web请求的加速器,又是缓存代理服务器。
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
设置透明代理时,必须打开包转发功能,还要结合ipchains:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A input -j ACCEPT -i lo
/sbin/ipchains -A forward -s 192.168.2.1/24 -d 0/0 -j MASQ
2.用户认证设置
默认时,Squid本身不带任何认证程序,但是可以通过外部认证程序来实现用户认证。一般有以下的认证程序:LDAP认证、SMB认证、基于mysql 的认证、基于sock5的密码认证和基于Radius的认证。下面介绍常用的ncsa实现的认证,ncsa是Squid源代码包自带的认证程序之一,实现步骤如下:
进入/usr/local/squid/auth_modules/NCSA目录,执行:
make
make install
编译成功后,会生成ncsa_auth的可执行文件,拷贝生成的可执行文件到/usr/bin目录下。
修改squid.conf文件的相关选项。
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
authenticate_program /usr/local/squid/bin/ncsa_auth
/usr/local/squid/etc/passwd
利用Apache携带的工具软件htpasswd在/usr/locad/squid/etc下生成密码文件,并添加相应的用户信息。该密码文件每行包含一个用户的信息,即用户名和密码。例如,用htpasswd生成密码文件passwd并添加用户me:
htpasswd -c /usr/local/squid/etc/passwd me
重新启动Squid,密码认证生效。
3.客户端的设置
在客户端浏览器的选项中将代理服务器的IP地址设为192.168.2.32,http端口为80。若要设置透明代理,则客户端不需要在浏览器中指定代理服务器,而将网关设为192.168.2.32,并且客户端要配置好DNS。