概念介绍
动态网关与服务、注册中心、配置中心的关系,网关作为外部访问的唯一入口,若挂掉了,那全部的服务就无法访问了,为了防止这种情况出现,网关也应该和服务一样做集群。然而网关作为唯一入口,总不能让用户记住多个域名吧,所以在网关之上,我们加一层nginx做反向代理。这样做有什么好处呢?首先,如果我们使用nginx作为网关,则权限验证、日志管理等原来网关做的需要在nginx上实现,nginx不支持java开发,这会增加开发难度,所以nginx仅用做反向代理(负载均衡也可以),网关仍维持原功能。这样形成了下图的关系
直接体现
$ vim $NGINX_HOME/conf/nginx.conf
worker_processes auto;
events {
use epoll;
worker_connections 65535;
}
http {
upstream aidan.org{
server 127.0.0.1:8881 weight=3;
server 127.0.0.1:8882 weight=2;
server 127.0.0.1:8883 weight=1;
}
server {
listen 80;
server_name aidan.org;
location / {
proxy_pass http://aidan.org;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
$ nginx -s reload
测试
[root@localhost ~]# curl aidan.org/a/a
hello nginx,I'm 8881 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org/a/a
hello nginx,I'm 8882 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org/a/a
hello nginx,I'm 8881 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org/a/a
hello nginx,I'm 8883 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org/a/a
hello nginx,I'm 8882 Server.nginx host is aidan.org,your realIp is 127.0.0.1
[root@localhost ~]# curl aidan.org/a/a
hello nginx,I'm 8881 Server.nginx host is aidan.org,your realIp is 127.0.0.1
发现8881出现了3次,8882出现2次,8883出现1次,权重比为3:2:1
权重越高 访问的占比也最高
这里可以根据不同的服务器优劣进行分配