本次学习实现如下图的红框部分
1.nginx 安装
yum install nginx
2. 配置nginx
nano /etc/nginx/nginx.conf
-
upstream centos7.linbsoft.com {
-
server centos7.linbsoft.com:
8201 weight=
1;
-
server centos7.linbsoft.com:
8202 weight=
2;
-
}
-
-
server {
-
listen
80;
-
server_name centos7.linbsoft.com;
-
-
location / {
-
proxy_pass http:
//centos7.linbsoft.com;
-
proxy_set_header Host $host:$server_port;
-
}
-
error_page
500
502
503
504 /
50x.html;
-
location = /
50x.html {
-
root html;
-
}
-
}
这是 把访问 http://centos7.linbsoft.com:80 的url 轮询方式导向 http://centos7.linbsoft.com:8201 和http://centos7.linbsoft.com:8202 而这两个网址就是spring zuul1 和zuul2 的服务网址端口
3. 关闭防火墙
systemctl stop firewalld
setsebool -P httpd_can_network_connect 1 //不然显示nginx 权限不够
或
vim /etc/selinux/config
SELINUX=disabled
4. spring boot项目创建zuul server
参见我的上篇学习文章 https://blog.csdn.net/oLinBSoft/article/details/85270448
zuul1和zuul2可以完全一样,就是同一个jar文件发布到不同的ip微服务上,端口,应用名等都一样,唯一不同是部署在不同的ip或域名上
我在学习环境中在同一个eclipse这启动,就把两个zuul的端口设置成一个8201,另一个8202,其他都一样
application,properties 如下
-
server.port=
8201
//另一个zuul为8202
-
spring.application.name=MicroserviceZuulServer
-
eureka.client.serviceUrl.defaultZone=http:
//admin:123@centos7.linbsoft.com:8101/eureka/,http://admin:123@microservice1.linbsoft.com:8102/eureka/
-
spring.session.store-
type=none
-
-
zuul.routes.servicea.path=/servicea
/**
-
zuul.routes.servicea.serviceId=MicroserviceServiceA8801
5.当前项目如图
6.启动测试,访问 http://centos7.linbsoft.com
会交替出现访问http://centos7.linbsoft.com:8201 和http://centos7.linbsoft.com:8202的效果
访问 zuul代理的 serviceA,只要zuul1,zuul2至少有一个服务开启,都能正常访问
使用nginx的另外一个好处就是屏蔽了nuul内部服务的api显示,浏览器显示的都是nginx的url,在外面看到的好像是只有一个网站,而不是在一堆微服务中不断跳转。