使用haproxy+squid构建正向代理服务

##使用haproxy+squid构建正向代理服务


#####正向代理的业务场景

  • 假设在局域网内存在6台主机,其中只有一台主机可以上外网,那么其余5台主机就需要通过那一台可以上外网的主机上网,即所谓代理(正向代理)。代理服务器启动后,不能上网的主机只需在IE中配置代理服务器即可。IE中的代理服务器设置为 “Internet选项->连接->局域网设置->代理服务器” 中设置代理服务器的IP和代理服务器的端口。

#####问题来了,如何构建一个代理服务呢?

  • 如上述假设,在那一台可以出外网的主机上安装代理软件squid,并进行适当配置即可。应该说明的是,代理软件很多,如果那一台能出外网的主机是Windows系统的话,可以选择ccproxy。这里主要是指在Linux环境下的代理,其他代理软件还有nginx,不过貌似大家都用它做反向代理,做正向代理这里还是用squid吧。

#####squid的安装,配置,运行

  • 安装
sudo apt-get install squid
  • 配置, 打开/etc/squid3/squid.conf文件,注意修改如下的配置项
http_port 3128                 #代理服务器的端口
##http_access deny !Safe_ports #注释掉此项
##http_access deny manager     #注释掉此项
##http_access deny to_localhost#注释掉此项
##http_access deny all         #注释掉此项

#添加下面两项,设置哪些网段可以访问本代理服务器
acl our_networks src 192.168.29.0/24 192.168.17.0/24
http_access allow our_networks

  • 重启服务,使代理服务生效
sudo service squid3 restart

#####用haproxy的目的

  • haproxy是负载均衡器,它可以将网络请求按一定算法均匀分布到各个代理服务器(这里指正向代理)上,防止压力都集中在某一个节点上,提高整体的服务的负载能力。

#####此处使用haproxy的场景

  • 假设有103台主机需要出外网,其中只有2台能直接访问外网,那么我们接着假设这两台主机的IP分别是192.168.29.210, 192.168.29.211,且已经在上面安装好squid代理服务。 还有一台主机我们将其选做负载均衡所在的机器,假设其IP为192.168.29.212。

  • 按上述做法,在其余100台主机上可以设置代理(IE “Internet选项->连接->局域网设置->代理服务器” )为192.168.29.212,haproxy负载均衡器会将网络请求按一定算法均匀打到192.168.29.210, 192.168.29.211两台代理服务器上。

#####haproxy的安装,配置,运行

  • 安装
sudo apt-get install haproxy
  • 配置,配置文件位于/etc/haproxy/haproxy.cfg
global
	daemon
	maxconn 1024

defaults
	mode	http
	timeout connect 5000ms
	timeout client 50000ms
	timeout server 50000ms

frontend secure
	bind *:8888
	stats enable
	stats uri /admin?admin
	stats auth admin:admin
	stats admin if TRUE
	stats refresh 10s

frontend httpproxy
	bind 0.0.0.0:4567
	default_backend servers

backend servers
	balance leastconn
	server squid1 192.168.29.210:3128 maxconn 512 weight 1
	server squid2 192.168.29.211:3128 maxconn 512 weight 1
  • 配置解释

    • 内部的“frontend secure”区块表示的是haproxy的web控制台,可以使用http://192.168.29.212/admin?admin来访问,用户名密码这里设置的都是admin,并设置10秒刷新一次。
    • 内部的“frontend httpproxy”区块绑定了4567端口,那么那些(100台主机)就可以在IE中设置代理服务器为192.168.29.212,端口4567。
    • 内部的“backend servers”区块使用了“leastconn”算法,指的是最少连接者优先(哪一台代理服务器上请求最少,就把请求往这一台代理服务器上打)。“server squid1 192.168.29.210:3128 maxconn 512 weight 1”和“server squid2 192.168.29.211:3128 maxconn 512 weight 1”指的是两台squid的代理服务器。
  • 运行

sudo haproxy -f /etc/haproxy/haproxy.cfg 
  • 停止运行
sudo killall -9 haproxy

转载于:https://my.oschina.net/crooner/blog/602443

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值