Nginx 反向代理
Nginx 反向代理为什么可以提高网站性能?
请求如果直接发送到同步处理的后端, 那么从收到请求到把响应发出去这段时间, 一个进程的资源就被占用了. 在慢连接的情况下, 这个进程除了处理之外大多数时间基本耗费在了无意义的等待上. Nginx 在这方面的优势就在于它的异步非阻塞模型. 这意味着 Nginx 可以通过基于事件的方式同时处理和维护多个请求, 而后端就只需要去做逻辑计算, 节约了等待时间去处理更多的请求.
反向代理:
在计算机世界里, 由于单个服务器处理客户端(用户)请求的能力有限, 当用户的接入请求蜂拥而至时, 会造成服务器忙不过来的局面, 可以使用多个服务器共同分担成千上万的用户请求, 这些服务器提供相同的服务, 对于用户来说, 根本感觉不到任何差别.

反向代理的实现:
1. 需要有一个负载均衡设备来分发用户请求, 将用户请求分发到空闲的服务器上.
2. 服务器返回自己的服务到负载均衡设备.
3. 负载均衡将服务器的服务返回用户.
以上的潜台词是: 用户和负载均衡设备直接通信, 也意味着用户做服务器域名解析时, 解析得到的 IP 其实是负载均衡的 IP,而不是服务器的 IP,这样一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表, 而不会影响现有的服务.
正向代理:
我们常说的代理就是正向代理,正向代理的过程,他隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务被代理服务器代替来请求。
反向代理:
反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,背后可能有成千上万台服务器为我们服务,但具体那一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里. Nginx 就是性能非常好的反向代理服务器, 用来做负载均衡.

两者的区别在于代理的对象不一样: 正向代理的对象是客户端,反向代理的对象是服务端.