Nginx出现的背景
随着业务量和用户量的逐渐庞大,单机方式已经满足不了大公司对外提供服务的需求。因此会选择搭建一个包含若干台服务器的集群,对外提供服务。但集群在用户看来就是一个整体(相当于一台服务器)。所以,用户该如何正确的访问到集群中的某一台服务器,来处理自己当前的请求。这里就需要有一个网关,作为服务对外暴露的一个接口。即所有请求都先发送到这个网关,网关再根据请求的类型转发到对应的服务器。同时,如果多台服务器提供一样的服务,该网关希望将请求平均分配到这些不同的服务器上进行处理,来保障某一个机器的负载不会过重。
所以上面涉及到了Nginx的三大作用:反向代理,负载均衡,动静分离(最后一条上面没说)。
反向代理
有反向代理那么就必然有正向代理,正向代理的例子就比如说我们访问维基百科。在连上代理服务器以后,我们的ip就可以转成这台服务器的ip了(假设是脚盆鸡的),此时通过这种中转就可以成功访问google了。
这里的代理服务器就是做正向代理的。正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。
而反向代理与正向代理的区别在于:正向代理代理客户端,反向代理代理服务器。
反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
以下面的配置代码为例:
server {
listen