web前端

反向代理和负载均衡

2020-04-09  本文已影响0人  姜治宇

什么是反向代理?
先说一下什么是正向代理吧。
正向代理是代理的客户端。比如我们访问米国的网站,一般是需要挂vpn才能访问的,vpn的作用是从我们的本土ip转到米国的ip,通过米国的ip再访问,等于中转了一层,但客户端并未感觉到,这就是正向代理。
那反向代理呢?反向代理就是代理服务器。我们访问一个网站,可能后面是多台服务器做的支持,请求被平均分配到各台服务器下去处理(负载均衡),但客户端并未感觉到,这就是反向代理。
好啦,说了这么多,看看如何实现吧。

nginx.conf

worker_processes 1;#进程数,一般是多少核就设置几个,默认是1
events {
  worker_connections  1024;  #最大连接数
}
http {
  upstream  node_server_pool {   #建立服务器池
      server localhost:3000;
      server localhost:3001;
  }
  server{
    listen    80;#监听端口号
    server_name  localhost;  #主机名
    location /  {
      proxy_pass  http://node_server_pool;  #反向代理
     }  
  }

}

从客户端来看,我们只并不知道3000和3001端口,只需访问80端口,也就是http://localhost即可。

server.js

写个node脚本做server。

require('http').createServer(function(req,res){
    res.end('hello'+process.argv[2])
}).listen(process.argv[2])

起两个端口号做服务器池:

>node server.js  3000
>node server.js  3001

然后再用客户端做测试,多次执行curl:

>curl localhost
>curl localhost
>curl localhost
>curl localhost
...

测试结果:

hello 3000
hello 3001
hello 3000
hello 3001
...

请求被均衡分配到两台服务器下面了。

上一篇 下一篇

猜你喜欢

热点阅读