本次学习实现如下图的红框部分
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.youkuaiyun.com/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,在外面看到的好像是只有一个网站,而不是在一堆微服务中不断跳转。