微服务Spring Cloud配置zuul网关
案例代码如下:
- 在父工程 spring-cloud-demo2 下创建一个名为 micro-service-cloud-gateway-9527 的 Spring Boot 模块,并在其 pom.xml 中引入相关依赖,配置如下。
<!--特别注意:在 gateway 网关服务中不能引入 spring-boot-starter-web 的依赖,否则会报错-->
<!-- Spring cloud zuul 网关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<!--Eureka 服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
- 在 micro-service-cloud-gateway-9527 的类路径(/resources 目录)下,新建一个配置文件 application.yml,配置内容如下
server:
port: 9527 #端口号
spring:
application:
name: microServiceCloudGateway
# cloud:
# gateway: #网关路由配置
# routes:
#将 micro-service-cloud-provider-dept-8001 提供的服务隐藏起来,不暴露给客户#端,只给客户端暴露 API 网关的地址 9527
# - id: provider_dept_list_routh #路由 id,没有固定规则,但唯一,建议与服务名对应
# uri: http://localhost:8001 #匹配后提供服务的路由地址
# predicates:
#以下是断言条件,必选全部符合条件
# - Path=/dept/list/** #断言,路径匹配 注意:Path 中 P 为大写
# - Method=GET #只能时 GET 请求时,才能访问
eureka:
instance:
instance-id: micro-service-cloud-gateway-9527 #修改host配置文件
prefer-ip-address: true
# hostname: micro-service-cloud-gateway
client:
# fetch-registry: true
#register-with-eureka: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
- 在 micro-service-cloud-gateway-9527 的主启动类上,使用 @EnableZuulProxy注解,代码如下:
package net.biancheng.c;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
// @EnableEurekaClient
@EnableZuulProxy
public class MicroServiceCloudGateway9527Application {
public static void main(String[] args) {
SpringApplication.run(MicroServiceCloudGateway9527Application.class, args);
}
}
4启动路由测试: https://micro-service-cloud-gateway-9527 :9527+对外暴露的微服务名称+接口地址
路由访问映射规则设置
在yml配置文件中添加如下配置内容:
访问地址会变成https://micro-service-cloud-gateway-9527 :9527+microservicecloud-dept+接口地址
zuul:
prefix: /atguigu #设置统一公共前缀
ignored-services: microservicecloud-dept #忽略单个原真实服务地址,忽略所有的直接使用 " * "
routes:
mydept.serviceId: microservicecloud-dept
mydept.path: /mydept/**