您的位置:首页 > 运维架构 > 反向代理

apache-squid代理及负载均衡

2014-04-02 16:40 585 查看
squid代理
(1)Squid是一个缓存Internet数据的一个软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。目前,Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS协议,暂不能代理POP3、NNTP等协议。并且,Squid可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。Squid可以工作在很多的操作系统中,如AIX、Digital、UNIX、FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、 SCO、Solaris、OS/2等。
(2)反向代理与正向代理的区别
反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。
1.squid代理:是内部主机能上网
环境:
主机1(双网卡: eth0 192.168.0.176
eth1 192.168.1.1 )
主机2 192.168.1.192
主机1为代理服务器,有两块网卡,外网与内网,主机2的网段为内网网段,不能直接上网,要通过主机1的代理才能上网

配置主机1:
添加网卡eht1
[root@server76 squid]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
ONBOOT="yes"
IPADDR=192.168.1.1
NETMASK=255.255.255.0
[root@server76 rules.d]# cat 70-persistent-net.rules //删除网卡内容
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x10ec:0x8139 (8139cp) (custom name provided by external tool)

# PCI device 0x10ec:0x8139 (8139cp)

[root@server76 rules.d]# reboot
yum install squid -y
[root@server76 squid]# vim squid.conf
acl goodclient src 192.168.0.0/24
http_access allow goodclient
cache_dir ufs /var/spool/squid 1000 16 256 //缓存
/etc/init.d/squid start
主机2:
主机2的网卡ip为192.168.1.192
设置主机2的浏览器走代理

[root@server76 squid]# less /usr/share/doc/squid-3.1.4/squid.conf.documented//squid的文档
2.squid屏蔽某些网站:
例:屏蔽www.qq.com
acl badurl dstdomain www.qq.com
http_access deny badurl //必须放置在
屏蔽以http开头的网站:
acl badname dstdomain url_regex -i ^http://http_accessallow localnet之上
http_access deny badname
测试:内网主机设置代理,代理为192.168.1.1 3128
3.反向代理 //负载均衡,加速
环境配置:
主服务器:192.168.0.146
代理服务器:192.168.0.176
测试:浏览器访问代理服务器192.168.0.176时可访问到主服务器的测试页面
此代理不需要http,是以apach的身份去取数据的,缓存为squid的80端口
(1)、配置反向代理服务器

反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web 服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
目前有许多反向代理软件,比较有名的有 Nginx 和 Squid 。其他还包括Socks、Apache、Jigsaw、Delegate等。Nginx 是由Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。而Squid也可以用来构建反向代理服务器。

Squid作为反向代理服务器使用时,其工作原理为:客户端请求访问 WEB 服务时,DNS 将访问的域名解析为 Squid 反向代理服务器的 IP 地址,这样客户端的 URL 请求将被发送到反向代理服务器。如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端,否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用
[root@server76 squid-3.1.4]# curl -I www.qq.com
HTTP/1.1 200 OK
Server: squid/3.2.1
Date: Sat, 01 Mar 2014 06:03:30 GMT
Content-Type: text/html; charset=GB2312
Connection: keep-alive
Vary: Accept-Encoding
Expires: Sat, 01 Mar 2014 06:04:30 GMT
Cache-Control: max-age=60
Vary: Accept-Encoding
X-Cache: HIT from xian.qq.com //陕西腾讯的代理服务器在西安,为了迎合客户,而非让客户迎合腾讯,需设定此代理服务器的squid端口为80,
代理服务器配置如下:
yum install squid -y(移除原来的与apache)
#http_access deny manager //必须注释掉
http_port 80 vhost //squid端口为客户机访问apache的默认端口,vhost支持虚拟主机
cache_peer 192.168.0.146 parent 80 0 no-query originserver
cache_dir ufs /var/spool/squid 2000 16 256 //打开并更改2000M
[root@server76 squid]# /etc/init.d/squid reload
[root@server76 squid]# less /usr/share/doc/squid-3.1.4/squid.conf.documented帮助文档
主服务器配置:
[root@server46 html]# /etc/init.d/httpd restart
测试:客户机的浏览器:192.168.0.176->出现146的测试网页
4.squid负载均衡(轮循)
用域名做的,所以浏览器访问时必须输入域名,输入ip不生效,并且该域名必须在浏览器所在的解析该域名与所对应的ip,代理服务器需要有自己主机名的解析,而非以上域名
环境配置:
squid代理服务器:192。168.0.176
负载服务器:192.168.0.146 192.168.0.192
测试主机:192.168.0.121
squid主机配置:
http_port 80 vhost vport //添加虚拟端口
cache_peer 192.168.0.146 parent 80 0 no-query originserver name=around-robin
cache_peer 192.168.0.192 parent 80 0 no-query originserver name=bround-robin
cache_peer_domain a b www.eat.com //a,b轮循
[root@server76 squid]# /etc/init.d/squid reload
自我解析:192.168.0.176 server76.example.com(而非www.eat.com)
负载服务器编写测试页:
测试主机:
解析:vi /etc/host-> 192.168.0.176www.eat.com->http://www.eat.com
出现轮循时实验成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: