代理服务器之 squid、lvs、nginx、haproxy之间的区别

代理服务器之 squid、lvs、nginx、haproxy之间的区别

代理服务可简单的分为正向代理反向代理

1、正向代理

正向代理服务器:squid

用于代理内部网络对 Internet 的连接请求(如 VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标 Web 服务器的 HTTP 请求先发送到代理服务器上,然后由代理服务器去访问 Web 服务器,并将 Web 服务器的 Response 回传给客户端。

2、反向代理:

image.png-13.7kB

与正向代理相反,如果局域网向 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