一. Zuul是什么?
二. Zuul路由基本配置
(1)修改hosts文件,添加如下映射:
127.0.0.1 myzuul.com
(2) 新建Gateway工程
server:
port: 9527
spring:
application:
name: microservice-zuul-gateway
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
instance:
instance-id: gateway-9527.com
prefer-ip-address: true
@SpringBootApplication
@EnableZuulProxy
public class Application_Gateway_9527
{
public static void main( String[] args )
{
SpringApplication.run(Application_Gateway_9527.class, args);
}
}
(3) 启动Eureka集群,服务提供方,Gateway服务
不使用路由直接访问服务提供方:http://localhost:8001/product/get/1
通过网关路由访问服务提供方:http://myzuul.com:9527/microservice-product/product/get/2
三. Zuul路由访问映射规则
(1)给真实服务设置代理名称
在生产环境中,我们不想暴露真实的服务名称让外界知道,那么可以通过Zuul的访问映射设置代理名称。
zuul:
routes:
myproduct.serviceId: microservicecloud-dept
myproduct.path: /myproduct/**
此时我们可以如下访问:
http://myzuul.com:9527/myproduct/product/get/2
(2) 上面的配置后,还是可以通过真实服务名称访问
http://myzuul.com:9527/microservice-product/product/get/2,
如果想禁止真实服务名称访问,需要加上ignored-services属性配置:
zuul:
ignored-services: microservice-product
routes:
myproduct.serviceId: microservice-product
myproduct.path: /myproduct/**
如果想对所有的服务都禁止真实服务名称访问,则修改如下:
zuul:
#ignored-services: microservice-product
ignored-services: "*"
routes:
myproduct.serviceId: microservice-product
myproduct.path: /myproduct/**
(3) 设置统一公共前缀
zuul:
#ignored-services: microservice-product
ignored-services: "*"
prefix: /hong
routes:
myproduct.serviceId: microservice-product
myproduct.path: /myproduct/**
此时只有如下访问有效:
http://myzuul.com:9527/hong/myproduct/product/get/2