来源:HIT专家网 作者:普勇翔
随着医院信息化的发展,越来越多的院内应用需要从内部的局域网发展到外部的广域网,由此带来的外网通路需求也越来越大。医院在使用对外网络服务时,一般会直接向网络运营商购买专线,运营商提供固定IP。根据医院的实际需求情况,运营商会提供1-2个固定IP供医院使用。
在传统模式下,医院的对外服务网站、OA、内控等Web应用,系统默认直接使用固定IP地址及80端口。随着互联网的发展及应用程序的更新,医院对固定IP(特别是80端口)的需求也越来越大,例如:微信公众号、微信小程序、支付宝服务号、企业钉钉、移动医生站、OA、医院自建官网等都有所需求,少量、稀缺的固定IP已经不够使用。
日益增多的外网应用,对服务器的安全要求、性能要求也越来越高。这是因为:在固定IP有限的情况下,逐渐增多的Web应用必然要求开放更多的端口对外提供服务,端口开放得越多,针对端口的嗅探攻击也必然增多;针对越来越多的端口转发,在访问量剧增的情况下,会增大防火墙的硬件开销,对防火墙的性能带来压力。除此之外,这种访问方式需要用户死记IP地址及端口号,因此用户体验也并不友好。
如何让外网访问更安全、更高效、更便捷,同时又不需投入太高的成本?为解决上述问题,需要引入反向代理这一服务器概念。本文对如何使用服务器反向代理进行初步探讨。
什么是反向代理
首先我们应理解什么是代理服务。代理服务可以理解为“普通客户端—代理服务器—应用服务器”的一条通路。
普通代理(或称正向代理)是指用户通过代理服务器,访问应用服务器,如图1所示。用户数据通过因特网内代理服务器缓存中转,与应用服务器连接。对于应用服务器来说,接收到的信息来自代理服务器。在这种方式中,用户与应用服务器没有直接连接,代理服务器可以作为缓存以及数据交换中间服务器。此时的代理服务器一般是在客户网络中使用,也即普通代理的代理对象是客户端。
现在还有一种代理方式,称为反向代理。在这种方式中,代理服务器的作用主要也是进行数据缓存交换,但位置发生了改变,由原来的偏向用户接入,变成偏向应用服务器接入,如图2所示。
在反向代理模式中,用户访问的都是代理服务器,代理服务器再通过负载均衡、反向代理、URL映射等,将数据传送到后方的实际应用服务器。此时对于用户来说,只有一台代理服务器接入,并不能直接看到后面实际的应用服务器,也即反向代理的代理对象是服务端。
反向代理在医院网络环境的应用
目前,医院的网络现状是对外多应用服务器,且单一出口,主要采用的是“用户—外网—交换机、防火墙—NAT端口映射—内网服务器”这种形式,只能通过基于3、4层(网络层、传输层)不同端口号,来区别外网传入信息;IP端口被唯一占用,导致不同应用间无法同时使用HTTP协议的80端口、HTTPS的443端口。
而使用反向代理功能后,将转为走第7层(应用层)协议。这样网络不再唯一绑定IP端口,所有的服务将可以对网络进行复用,实际就是“用户—外网—代理服务器—域名匹配转发—内网应用服务器”的形式。
当然,在域名转发的代理服务器前端,也可架设防火墙、交换机等,对网络进行安全防护。同时,代理服务器也可安装一些过滤防护软件,提高整体外网接入的安全等级。
两种常见反向代理的部署使用
现在市面上有很多软件可以实现反向代理功能,例如:Nginx、Squid、Varnish、Apache TS、HAProxy、Application Request Routing(ARR)等。这里主要介绍Nginx以及Windows IIS自带的ARR工具。
首先是Nginx。这是现阶段比较火的反向代理服务之一,由国外人员研发,主要运行于Linux、Unix系统中,Windows系统也可支持。当前网络上有很多关于Nginx的安装方法介绍,本文简述一下Windows版本的安装方法。
第一步:到Nginx官网下载最新的Nginx安装包,并解压到本地。
第二步:修改配置文件nginx.conf,添加反向代理配置。
如图3所示,将域名www.vitonet.cn、wechat.vitonet.cn、oa.vitonet.cn、bi.vitonet.cn,分别映射到另外四个Web服务(截图非本院实例,见谅)。
第三步:命令行内执行“start nginx.exe”即可。
其次是基于Windows IIS服务自带的ARR工具。这是一款Windows官方出品的反向代理工具。此工具依赖Windows IIS服务,对Windows操作系统的服务器相当友好,操作配置等都是图形界面。
其安装方式如下:
首先到微软官方下载最新Application Request Routing安装包。如图4所示,点击安装即可。
安装完成后,在IIS管理器里会多出一个“URL重写”功能,进入后添加规则反向代理即可,如图5、图6所示。
总结反向代理在医院的实际作用
1.保护网站安全:经过外网防火墙过滤后,任何来自Internet的Web请求都必须先经过代理服务器,通过防火墙进行安全策略的最小化配置,对外网集群的应用进行最大化的保护。
2.通过配置缓存功能加速Web请求:可以缓存真实服务器上的某些静态资源,减轻真实服务器的负载压力。
3.节约IP资源:不用在外网防火墙上做多个地址转换策略,减轻防火墙压力,反向代理只需使用一个80端口,即可完成多个外网运用的分配。
4.用户端体验良好:只需输入二级域名即可访问Web业务,不用再死记IP地址和端口号。
【作者简介】
普勇翔,昆明市第二人民医院信息中心主任,中国研究型医院学会信息化分会青年委员,全国医药技术市场协会电子病历技术专业委员会委员,云南省医院协会信息管理专业委员会委员,云南省计算机学会医疗信息专业委员会委员。
【责任编辑:陈曦】
思路清晰、实操性强