代理服务器的应用

一.何为代理服务器:
客户端和服务器端被代理隔离在两端,客户端不能直接访问服务器端,客户端要访问服务器端的资源时,需要代理服务器的帮忙才能成功访问。
只有代理服务器能够支持的通信协议才能在代理服务器中正常工作。
如果要使用Linux主机担当路由器角色,就一定要启用IP_forward的功能。

二.代理服务器支持的通信协议:
以squid代理为例,其所能支持的通信协议有:HTTP, HTTPS, FTP.

三.代理服务器的分类:
代理服务器主要的功能就是“代理”,我们可以通过代理来“屏蔽”目的,如此即可为客户端或服务端提供一个安全的服务运行环境。代理服务器在应用上因为保护“对象”不同,基本上可分为缓存代理和反向代理两种。
缓存代理:

反向代理:
首先把企业真正的web服务器部署在企业内部网络中,并且在DMZ的区段中部署反向代理,在DNS服务器中奖WWW记录指向反向代理所在的IP,如此一来,任何要浏览这家企业网站的服务请求都会送给反向代理。接着,反向代理会帮客户端到真正的web服务器上取回其所需要的网页内容,最后反向代理再把取得的网页数据传输给客户端,如此客户端即可得到其所需的网页内容。

四.代理服务器的硬件要求:
代理服务器必须处理客户端所下载回来的网页数据,而且代理服务器还可能被用来过滤客户端的url,再加上代理服务器的网络流量通常非常大,所以硬件要求会苛刻一点。
1.处理器
2.内存
3.硬盘
4.网卡
五.安装squid代理:

六.使用squid构建缓存代理:

1.缓存代理的基本配置:
设置squid代理的服务器端口号:
squid代理默认使用的端口号为TCP Port 3128,如果不习惯使用这个端口号,那么可以使用http_port 3128:
设置缓存磁盘的大小:
cache_dir为squid存储缓存的参数定义。
cache_dir ufs /var/spool/squid 100 16 256
ufs:设置squid存储缓存的方式,可分为ufs, aufs, diskd等。
/var/spool/squid:缓存文件所存储的路径,如果可以的话,尽量让缓存存储于独立的分区上,以便提高squid代理读取缓存的速度。
100:设置单一缓存空间的存储上限,其单位是MB。
16 256:16 、256为L1及L2的目录数量,这两个数值随意设置就可以让squid代理运行起来,但如果要让squid代理的性能更好一些,那么这两个参数最好是经过计算而得的。计算公式如下:L1*L2=缓存总容量(KB)/第二层目录下文件总数/每个文件的 大小(KB)
设置高速缓存的大小:
cache_mem:大小通常为实体内存的1/2大小,但是如果代理服务器主机是专门用来执行缓存代理的任务,可以将缓存的大小设置为实体内存的2/3.
连接访问控制:
2.缓存代理客户端的配置:
在IE里,选择“工具”--->”internet选项”--->”连接”--->”局域网设置”,在”局域网设置中”,选中”为LAN使用代理服务器”,最后将代理服务器的IP和端口号填入即可.

3.缓存代理的高级配置:
a.缓存磁盘的空间管理:
不管缓存磁盘的空间有多大,也总有用完的时候,如果缓存代理的缓存空间用尽,缓存 代理就会将比较旧的缓存清除,并将新的缓存保存下来,如此反复的操作就会降低缓存代理的性能.
cache_swap_high 95
cache_swap_low 80

b.缓存数据大小上限:
maximum_object size 40960 KB
c.访问控制列表的定义:
在squid的连接控制中,可以将使用者的 访问方式分为不同的类型,针对不同的类型的访问行为加以限制。
acl uuu src 192.168.0.0/24
http_access allow uuu
--src:根据”来源”端的IP进行分类
--dst:根据”目的”端的IP进行分类
--srcdomain:根据”来源”端的域名进行分类
--dstdomain:根据”目的”端的域名进行分类
--srcdom_regex:使用正则表达式匹配来源端的域名
--dstdom_regex:使用正则表达式匹配目的端的域名
--urlpath_regex:使用正则表达式匹配URL不含域名的部分
--url_regex:使用正则表达式匹配完整的URL
--time:根据时间来匹配访问的合法性
--maxconn:根据连接数来匹配访问的合法性
--port:根据端口来匹配访问的合法性
--设置不需要缓存的数据
d.缓存代理连接访问控制
1.不允许客户端连接到lwork.com网站的任何一个网页
--acl lwork dstdomain .lwork.com
--http_access deny lwork
2.不允许客户端连接看视频
--acl watch_video urlpath_regex -i /video/.func=.vid={0-9}$
--http_access deny watch_video
3.一个客户端通知最多只能到因特网上下载”3个”mp3文件
--acl mp3_file url_regex -i .
/.*.mp3
--acl conn_limit maxconn 3
--http_access deny conn_limit mp3_file
e.缓存对象的管理
为了有效管理缓存对象的有效期限,squid代理使用refresh_pattern参数来控制及管理缓存对象的有效期限
f.squid代理的共工作日志
g.squid代理的名称解析

七.透明代理
1.透明代理的工作原理:
使用NAT的REDIRECT机制,把所有客户端送往因特网且端口是80的数据包转向到本机的3128,所以根本不需要再客户端的主机上做任何的设置.
2.透明代理的配置:
a.配置squid代理:
其实squid代理只需要把缓存代理配置稍微调整就可以。唯一需要修改的是:http_pport 3128 transparent
b.配置NAT
--iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
--iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 10.0.1.200

八.反向代理:
1.web服务器的分类:
a.基于IP的虚拟主机
b.基于名称的虚拟主机
2.构建反向代理
a.构建基于IP的虚拟主机

acl web_server dst 192.168.1.100
acl web_port port 80
http_access allow web_server web_port
http_port 80 vport defaultsite=192.168.1.100
cache_peer 192.168.1.100 parent 80 0 no-query originserver

b.构建基于名称的虚拟主机:

--acl domain_v1 dstdomain www.v1.com
--acl domain_v2 dstdomain www.v2.com
--acl domain_v3 dstdomain www.v3.com
--acl web_port port 80
--http_access allow domain_v1 web_port
--http_access allow domain_v2 web_port
--http_access allow domain_v3 web_port
--http_port 80 vhost
--cache_peer 192.168.1.20 parent 80 0 no-query originserver name=web_server1
--cache_peer 192.168.1.30 parent 80 0 no-query originserver name=web_server2
--cache_peer_domain web_server1 www.v1.com www.v2.com
--cache_peer_domain web_server2 www.v3.com

 c.如何在反向代理上运行https代理:

--acl web_server dst 192.168.1.10
--acl web_port port 80
--http_access allow web_server web_port
--http_port 80 defaultsite=192.168.1.10 vhost
--https_port 443 cert=/etc/squid/server.crt key=/etc/squid/server.key defaultsite=192.168.1.10 vhost
--cache_peer 192.168.1.10 parent 80 0 no-query originserver

posted on 2016-12-07 18:42  kasum  阅读(629)  评论(0编辑  收藏  举报

导航