美文网首页web前端
反向代理和负载均衡

反向代理和负载均衡

作者: 姜治宇 | 来源:发表于2020-04-09 19:47 被阅读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
    ...
    

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

    相关文章

      网友评论

        本文标题:反向代理和负载均衡

        本文链接:https://www.haomeiwen.com/subject/rwshmhtx.html