HAProxy一箭双雕——让一个端口完成两件事

来源:互联网 发布:一览 mac 破解版 编辑:程序博客网 时间:2024/05/17 04:01

背景

这里为啥会想到让一个端口做两件事呢,主要是因为小编的网络环境处于校园网里面,而校园网的防火墙对外只开放TCP的80端口,也就是说,如果从外部网络访问校园网内部的机器那只能通过80端口来访问。而学过套接字编程的童鞋都明白,一个端口号和固定的IP地址共同标识了物理机器上的一个进程,对于只有单个网卡的机器来说,通过一个端口号只能访问到本物理机器上的一个进程。但是在实际应用的需求中,显然是希望该物理机器能够提供多种服务,而每一种服务都是需要对外提供一个可访问的端口,显然这点在校园网的防火墙下是不可行的。那么是否存在一种方法是的通过一个端口来完成多种服务呢?是的,有这样的方法,这就是代理的使用。


工具

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。通过HAProxy对指定端口进行监听,分析连接协议,如果是http协议就让服务器交给http服务程序(如Apache、Nginx等)处理,如果是ssh协议就交给ssh服务程序,这样就完成了一个端口完成两件事情的需求,当然,这里完成的事情可以根据实际需求来变更,小编这里主要是完成让服务器对外提供两种服务,一个是Squid代理服务,一个是SSH登陆服务。


HAProxy安装和配置

对于Squid和SSH的安装配置,网上的教程很多,小编在这里不再复述。

而小编的安装配置环境是Ubuntu,安装的过程很简单,通过sudo apt-get install haproxy就可以完成安装过程,而剩下的就是配置问题,在配置过程中,小编走了不少弯路。

首先提供一个HAProxy的配置文件说明,传送门:http://leejia.blog.51cto.com/4356849/1421882

初次完成安装的时候,可能很多童鞋会发现,在HAProxy启动的时候就碰到一个麻烦,就是通过指令执行sudo service haproxy start之后,终点没有任何反应,而通过进程查找也没有找到对应的后台进程,是的,没有后台进程说明没有启动,而之所以没有启动是因为系统的默认是不支持启动,需要做的工作很简单,执行需要进入/etc/default/haproxy文件中,然后修改ENABLED=1,然后再次执行启动指令,就可以发现HAProxy进行顺利启动。

保证了HAProxy之后,剩下的就是配置的问题了,这里小编直接提供小编的配置文件:


需要注意的地方在图中均已经标识出来,HAProxy正是通过规则的匹配来完成这所谓的一箭双雕的过程。而测试也表明该配置确实可行,至此也就克服了端口受限的问题了。

0 0