什么是反向代理?
先说一下什么是正向代理吧。
正向代理是代理的客户端。比如我们访问米国的网站,一般是需要挂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
...
请求被均衡分配到两台服务器下面了。
网友评论