Nginx Reverse Proxy

关于Nginx基本知识在官网都可以找到,就不复述了,在这里主要理清proxy和reverse proxy,以及相关配置,用来作为socket.io服务器集群的知识铺垫。


Proxy & Reverse Proxy

我们经常使用正向代理,即用户手动设置代理服务器的ip和端口号,通过代理服务器去请求目标服务器,目标服务器会认为请求者为代理服务器。正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,如图


Nginx Reverse Proxy_第1张图片
proxy.png

反向代理是用来代理服务器的,不需要用户去设置,用户认为直接访问的就是服务器。反向代理隐藏了真实的服务端。如图所示


Nginx Reverse Proxy_第2张图片
reverse proxy.png

Reverse Proxy Configuration

相关配置在/usr/local/etc/nginx/nginx.conf中,这仅仅针对Mac而言,在其中还有一个nginx.conf.default,是用来恢复初始设定用的,在nginx.conf中的http模块这里(目前仅仅针对http而言,不涉及https),这里由一个server板块,其中监听的就是8080意思就是监听目前localhost:8080,下面的server_name就带着域名,上面listen就是端口,然后在location区域可以配置相关参数,对于反向代理的话需要在http中配置一个upstream 的板块。里面可以配置反向代理服务器,在server后加相应的域名以及端口名,比如

upstream my_nodes{
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
    server 127.0.0.1:3003;
}

就是配置了3个服务器,然后在server模块里配置location,如下

server {
    location / {
        proxy_pass http://my_nodes
    }
}

在这里配置就可以将访问端口8080的请求分发到my_nodes以下的服务器上,通过nginx自带的均衡负载策略就可以达到负载均衡的功能。

如果在upstream没有指明具体策略,nginx就会默认采用robin-round的算法来分发请求,是一种以轮询的方式依次将一个域名解析到多个IP地址的调度不同服务器的计算方法。

剩余策略有least_conn,就是最小连接数;ip_hash,用来实现sticky session方法;weighted load balance,用来在server 之后添加,来表示权重,用此来分配访问请求,权重分配的具体实例如下

upstream my_nodes{
    server 127.0.0.1:3001 weight=5;
    server 127.0.0.1:3002 weight=3;
    server 127.0.0.1:3003 weight=2
}

权重越大,分配到的访问几率越大。

你可能感兴趣的:(Nginx Reverse Proxy)