代理服务器之 squid、lvs、nginx、haproxy之间的区别
代理服务可简单的分为正向代理
和反向代理
1、正向代理
正向代理服务器:squid
用于代理内部网络对 Internet 的连接请求(如 VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标 Web 服务器的 HTTP 请求先发送到代理服务器上,然后由代理服务器去访问 Web 服务器,并将 Web 服务器的 Response 回传给客户端。
2、反向代理:
与正向代理相反,如果局域网向 Internet 提供资源,并让 Internet 上的其他用户可以访问局域网内资源,也可以设置一个代理服务器, 它提供的服务就是反向代理。反向代理服务器接受来自 Internet 的连接,然后将请求转发给内部网络上的服务器,并将 Response 回传给Internet 上请求连接的客户端。
2.1 squid
最古老的代理服务器
2.2 lvs
- 优点:抗负载能力强、是工作在网络4层之上仅作分发之用
- 配置性比较低,这是一个缺点也是一个优点,简单不易出错
- 工作稳定,抗负载能力很强,有完整的双机热备方案,如LVS(DR)+ Keepalived。
- 无流量,LVS只分发请求,而流量并不从它本身出去
- 应用范围比较广,几乎支持所有应用
- 缺点:
- 不支持正则表达式处理,不能做动静分离
- 网站应用比较庞大的话,LVS/DR+Keepalived实施起来比较复杂
2.3 nginx:
- 优点:
- 工作在七层之上,针对HTTP做分流策略,正则规则比haproxy更灵活
- 对网络的稳定性依赖小
- 安装配置简单
- 高负载高并发低消耗
- 不仅能做代理,还可以做web服务器
- 还能缓存静态网页和图片
- 社区活跃,第三方模块非常多
- 缺点:
- 适应范围较小,仅能支持http、https、Email协议。
- 对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。
2.4 haproxy:
- 优点:
- HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段)
- HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
- HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
- HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡
- HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有8种
- 缺点:
- 不支持POP/SMTP协议
- 不支持SPDY协议
- 不支持HTTP cache功能
- 重载配置的功能需要重启进程
- 多进程模式支持不够好
3、squid正反向代理区分
- 正向代理:Squid后面是客户端,客户端上网要通过Squid去上;
- 反向代理:Squid后面是服务器,服务器返回给用户数据需要走Squid