SpringCloud微服务网关path路径过滤

1.配置application.yml文件

spring:
  application:
    name: gateway-admin
  cloud:
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
              allowedOrigins: "*"
              allowedMethods:
              - GET
              - POST
              - PUT
              - DELETE
      routes:
      - id: file
        uri: http://localhost:8002
        filters:
        - StripPrefix=1
        predicates:
        - Path=/brand/**

2.配置解析

首先,我的微服务的地址为http://localhost:8002,网关端口为9001,我们需要通过网关访问微服务,那么配置路由过滤为- Path=/brand/**,意识就是访问地址http://localhost/brand/后接地址的所有请求都会映射到http://localhost:8002/后接地址
注意:按照网上的文档,这里直接配置-Path=/brand/**即可,但事实很慢访问结果为404,需要加上- StripPrefix=1`,才能访问成功。
在这里插入图片描述

总结

公众号“程序港湾”已经开通,扫描以下二维码关注,海量教程等你来选,还有工程师在线答疑。
在这里插入图片描述

<think>好的,我需要帮助用户了解如何在Spring Cloud中进行微服务网关的配置,并提供教程示例。首先,我应该回顾用户提供的引用内容,特别是引用[2]和[3],因为它们直接提到了网关的配置步骤和组件。 用户的问题集中在网关配置的教程和示例,所以我需要按照步骤详细说明。根据引用[2],创建网关微服务需要创建模块、引入依赖、编写启动类和配置路由。引用[3]提到了路由谓词工厂和内置的断言机制,这些也应该包含在配置说明中。 接下来,我需要确保结构清晰,分步骤讲解。首先,创建项目并添加依赖,比如Spring Cloud Gateway和Nacos服务发现。然后配置路由规则,可能包括路径匹配、断言和过滤器。示例部分需要具体,比如图书管理系统的API路由,这样用户能更好地理解。 还要注意使用正确的代码格式,如YAML配置示例,并解释每个部分的作用。同时,需要提到动态路由和服务发现集成,如结合Eureka或Nacos,这样展示网关的实际应用场景。最后,添加常见配置项,比如全局过滤器和超时设置,帮助用户扩展知识。 需要检查是否所有技术术语都正确,比如路由、断言、过滤器,并确保示例代码的语法正确。另外,引用标识要正确对应到参考资料,比如引用[2]和[3]的相关内容。最后,生成相关问题时要围绕网关配置的扩展知识和常见问题,帮助用户深入学习。</think>### Spring Cloud 微服务网关配置教程与示例 #### 1. **创建网关微服务模块** 首先创建一个独立的Spring Boot项目作为网关服务,并添加以下依赖: ```xml <!-- Spring Cloud Gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- Nacos 服务发现(若使用其他注册中心可替换为Eureka等) --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> ``` --- #### 2. **配置路由规则** 在`application.yml`中定义路由规则。以下示例展示了如何将请求路由到图书管理系统的两个服务(用户服务和图书服务)[^2][^3]: ```yaml spring: cloud: gateway: routes: - id: user-service-route uri: lb://user-service # lb表示负载均衡,user-service是服务注册名 predicates: # 断言配置 - Path=/api/users/** # 匹配以/api/users开头的请求 filters: - StripPrefix=1 # 移除路径中的第一个前缀(即/api) - id: book-service-route uri: lb://book-service predicates: - Path=/api/books/** - After=2024-01-01T00:00:00.000+08:00 # 内置断言工厂示例:仅在该时间后生效 filters: - AddRequestHeader=X-Gateway-Request, true # 添加请求头 ``` --- #### 3. **启用服务发现与动态路由** 若需动态从注册中心(如Nacos)获取服务列表,添加以下配置: ```yaml spring: cloud: gateway: discovery: locator: enabled: true # 开启通过服务ID动态路由 lower-case-service-id: true # 服务ID转为小写 ``` --- #### 4. **自定义全局过滤器示例** 创建一个全局过滤器记录请求日志: ```java @Component public class LoggingGlobalFilter implements GlobalFilter { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("请求路径: " + exchange.getRequest().getURI()); return chain.filter(exchange); } } ``` --- #### 5. **API网关统一入口测试** 假设用户服务接口为`http://user-service:8080/users`,通过网关访问的路径变为: ``` http://gateway-host:port/api/users -> 转发至 user-service:8080/users ``` --- ### 常见配置项说明 | 配置项 | 作用 | |-------------------------|----------------------------------------------------------------------| | `Path` 断言 | 匹配请求路径 | | `Before/After` 断言 | 按时间范围限制路由生效 | | `Header` 断言 | 检查请求头是否符合条件 | | `StripPrefix` 过滤器 | 截断请求路径的前缀 | | `Retry` 过滤器 | 配置失败重试策略 | | `CircuitBreaker` 过滤器 | 集成Hystrix实现熔断 | --- ### 引用说明 - **动态路由与断言工厂**:Spring Cloud Gateway通过内置的路由谓词工厂(如`Path`、`Header`)实现灵活的请求匹配逻辑[^3]。 - **服务发现集成**:网关结合Nacos或Eureka可自动发现服务实例并实现负载均衡[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王乐乐君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值