反向代理的基本概念

http://en.wikipedia.org/wiki/Reverse_proxy

Reverse Proxy(反向代理):

  1. 它是一个Proxy:转发客户端的请求和服务端的响应

  2. 为什么说Reverse? Forward Proxy一般是处在Client和Server之间,而Reverse Proxy则和Server放在一起,一般是同一个局域网内。比如apache httpd和tomcat就部署在一起。

作用:本质上来说,反向代理是一种“Indirection”。作为系统设计的核心理念之一,indirection可以起到很多种作用:

1. 安全:

  a.屏蔽Server的特性. 如果黑客不知道server是tomcat还是php,就无法采取专门针对特定服务器类型的攻击。

  b.防火墙。Client无法直接访问Server,无法直接进行攻击。

2. 性能:

  a.一个Reverse Proxy下面可以挂多个Server,实现集群和load balancing.

  b.http协议相关的Cache. Apache httpd就很擅长这一点。

  c.压缩response (不过很多Server自己也可以做这种事)

  d.替server分担一些请求,尤其是静态内容. httpd比tomcat处理静态内容的能力更高(原因不详)

3. 功能:可以干些URL重写之类的事情

4. 结构:对外提供唯一的服务入口,使proxy+多台server组成的系统在Internet上仍表现得像单台

  a. 可以只用一个外部IP

  b. 可以只用一个域名,一个SSL证书 (如果你的域名本身可以对应多个IP,也不需要reverse proxy帮忙)   

两个最流行的反向代理:Apache Httpd V.S. nginx (念作engine x)

有人有个精辟的总结:Apache is like Microsoft Word, it has a million options but you only need six. Nginx does those six things, and it does five of them 50 times faster than Apache.

  1.nginx功能精而少,配置简单

  2.nginx要快的多。因为它不像httpd一样频繁启动新的系统进程或线程来处理新的请求。nginx只用一个或少数几个线程,以异步非阻塞的方式来处理所有请求。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.