Nginx反向代理技术详解(原理+应用+案例)

Nginx反向代理在大型网站有非常广泛的使用,下面我就重点来详解Nginx反向代理@mikechen

正向代理

要理解清楚反向代理,首先:你需要搞懂什么是正向代理。

正向代理,是一种位于客户端、和目标服务器之间的代理服务,它的核心作用是代理客户端的请求。

Nginx反向代理技术详解(原理+应用+案例)-mikechen

举一个简单的例子,你想访问google,访问不了,这时,你可以通过一个位于国外的正向代理服务器来解决。

你的电脑 -> 正向代理服务器 -> google

用户直接访问不了谷歌,但通过代理就能访问。

 

Nginx反向代理

从字面上就能看出来,反向代理和正向代理在概念上是相反的。

正向代理:代理的是客户端,用户无法直接访问目标服务器,需要通过代理服务器来中转。

而反向代理,代理的是服务端。

还是举一个例子,比如:大型网站如淘宝、京东为了应对高并发访问,会使用反向代理服务器。

当用户访问 www.taobao.com 时,请求首先到达反向代理服务器(如 Nginx )。

这个代理服务器根据负载均衡策略,将请求分发给后端多台真正的应用服务器。

如下图所示:

Nginx反向代理技术详解(原理+应用+案例)-mikechen

server {
    listen 80;
    server_name www.taobao.com;

    location / {
        proxy_pass http://***;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

所有客户端的请求都发送给反向代理服务器,然后由反向代理服务器将请求转发给:后端的真实服务器。

在这个过程中,客户端只知道反向代理的地址,并不知道后端服务器的真实 IP 地址。

这样,用户的请求压力就被分散到了多台服务器上,保证了网站的稳定运行。

mikechen睿哥

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

评论交流
    说说你的看法