开发者学堂课程【微服务框架 Spring Cloud 快速入门:路由访问映射规则】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/614/detail/9369
路由访问映射规则
路由访问映射规则是什么意思呢?
就好比我们之前的滴滴打车的举例,其中有一个虚拟号码来访,我们就看不到它真实的号码来访,而只能看到他的虚拟号码。明白这一思想,我们就来对刚才的访问地址做一个映射规则。
比如此时我们对外暴露出了真实的微服务名称为
microservicecloud-dept 但此时如果我并不想暴露它,这个时候我们就要做一个安全加固,就好比是虚拟拨号一样。
http://myzuul.com:9527/microservicecloud-dept/dept/get/2
1.工程 microservicecloud-zuul-gateway-9527
2.代理名称
YML
首先我们找到我们的工程直接在9527上面修改,加了中间绿色部分的路由网关之后,之前蓝色部分的真实地址,就会被虚拟的所取代。表示之前真实的地址 mydept.serviceId:xxx,可以用虚拟的mydept.path:xx来替代。
before
http://myzuul.com:9527/microservicecloud-dept/dept/get/2
zuul:
routes :
mydept.serviceId: microservicecloud-dept
after
http://myzuul.com:9527/mydept/dept/get/1
直接将其加到15行之中然后保存运行。
在网页之中查看效果,可以看到我们用 mydept 做了真实微服务名的映射能够成功访问,就好比是滴滴打车的虚拟软件拨号。
但是虽然新功能加上去了但是使用原来真实的微服务名称仍然可以访问。而我们要保证安全性最好是单入口单出口。所以我们应该要让真实的名字隐藏而假的名字暴露,简称“隐真示伪”。
路由访问OK
http://myzuul.com:9527/mydept/dept/get/1
原路径访问OK
http://myzuul.com:9527/microservicecloud-dept/dept/get/
两个路径都可以访问违背了单入口单出口的原则,所以我们要将原真实服务名忽略
在 yml 中添加以下红色部分代码。耐心等待运行。
其中绿色部分做的是id和路径的映射,红色部分表示不能再使用这个真实路径访问。同时添加代码的时候要注意格式对齐。
server: //安装口为9527
port: 9527
spring:
application:
name: microservicecloud-zuul-gateway
//微服务器的名字
eureka:
client:
service-url: //Eureka
集群defaultZone:http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
instance:
instance-id: gateway-9527.com
prefer-ip-address: true
zuul:
ignored-services: microservicecloud-dept
routes:
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**
info://这一部分可写可不写
app. name: atguigu-microcloudcompany.
name: toervi.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
我们将原路径的地址
http://myzuul.com:9527/microservicecloud-dept/dept/get/2改为
http://myzuul.com:9527/microservicecloud-dept/dept/get/3可以看到显示已经被封住了,无法访问
而将虚拟的地址
http://myzuul.com:9527/mydept/dept/get/1改为
http://myzuul.com:9527/mydept/dept/get/2仍然可以显示出来,这就表明我们完成率把原真实服务名成功忽略。
单个具体,多个可以用”*”
假设现在我们要忽略许多真实的微服务器名称,就应该使用*,将红色处的代码改为下方形式,就可以实现忽略多个真实的微服务器名称
zuul:
ignored-services:routes:”*”
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**
设置统一公共前缀
假设我们现在在北京,我们有两所据点,一个北京一个深圳,为了对外暴露我们可以在前面统一加一个公共前缀,比方说:尚硅谷北京分校,尚硅谷深圳分校。两者前都加了一个统一的前缀叫尚硅谷。同样针对我们的域名管理和安全加固也支持这样的一种模式
要实现以上,首先在 YML 的代码中加上红色部分代码,然后运行。
zuul:
ignored-services : "*"
routes:
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**
运行之后我们会发现,即便是使用虚拟的网址也无法访问了,是因为没有加上前缀 atguigu。
加上之后就可以显示了
YML
server:
port: 9527
spring:
application:
name: microservicecloud-zuul-gateway
zuul:
prefix: /atguiguignored-services : "*"
routes:
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**
eureka:
client: