Spring 云网关未路由(任何请求都为 404)
Spring Cloud Gateway not routing (404 for any request)
我一直在尝试使用 Spring 云网关、Eureka、配置服务和一些微服务创建一个 docker-compose 堆栈。这些服务在自己的公开端口上启动和工作,配置服务工作,Eureka 注册这些服务。但是我无法让 Spring Cloud Gateway 工作。
服务正确启动(或者至少日志中没有错误),当我远程进入容器时,我能够请求我想调用的服务,但如果我尝试通过配置路由我收到 404。
我的网关配置(为了方便,我将配置服务配置和 bootstrap.yml 合并):
spring:
application:
name: gateway-service
cloud:
config:
uri: http://config-service:8080
eureka:
client:
serviceUrl:
defaultZone: http://discovery-service:8061/eureka/
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
spring:
cloud:
gateway:
routes:
- id: employee-service
predicates:
- "Path=/employee/**"
filters:
- StripPrefix=1
uri: "http://employee-service:8080"
我很确定我只是误解了一些微不足道的事情,我离成功只有一步之遥,但是……我就是找不到。
我期望发生的事情:
- 我导航到http://localhost:8080/employee/api/v1/employees
- 网关将请求路由到 http://employee-service:8080/api/v1/employees(如果通过 curl 从网关容器调用则有效)
- 我在浏览器中收到了正确的响应
我的容器:
0.0.0.0:8080->8080/tcp, 8088/tcp employee-app_gateway-service_1
8088/tcp, 0.0.0.0:5082->5005/tcp, 0.0.0.0:8082->8080/tcp employee-app_employee-service_1
8088/tcp, 0.0.0.0:8011->8061/tcp employee-app_discovery-service_1
8088/tcp, 0.0.0.0:8012->8080/tcp employee-app_config-service_1
这必须是我最可耻的第 8 层问题之一。 boostrap.yml != bootstrap.yml。我确实花了三天时间。我不确定我是在生自己的气还是感到羞耻。我希望你会笑我:-)
我一直在尝试使用 Spring 云网关、Eureka、配置服务和一些微服务创建一个 docker-compose 堆栈。这些服务在自己的公开端口上启动和工作,配置服务工作,Eureka 注册这些服务。但是我无法让 Spring Cloud Gateway 工作。
服务正确启动(或者至少日志中没有错误),当我远程进入容器时,我能够请求我想调用的服务,但如果我尝试通过配置路由我收到 404。
我的网关配置(为了方便,我将配置服务配置和 bootstrap.yml 合并):
spring:
application:
name: gateway-service
cloud:
config:
uri: http://config-service:8080
eureka:
client:
serviceUrl:
defaultZone: http://discovery-service:8061/eureka/
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} ${LOG_LEVEL_PATTERN:-%5p} %m%n"
spring:
cloud:
gateway:
routes:
- id: employee-service
predicates:
- "Path=/employee/**"
filters:
- StripPrefix=1
uri: "http://employee-service:8080"
我很确定我只是误解了一些微不足道的事情,我离成功只有一步之遥,但是……我就是找不到。
我期望发生的事情:
- 我导航到http://localhost:8080/employee/api/v1/employees
- 网关将请求路由到 http://employee-service:8080/api/v1/employees(如果通过 curl 从网关容器调用则有效)
- 我在浏览器中收到了正确的响应
我的容器:
0.0.0.0:8080->8080/tcp, 8088/tcp employee-app_gateway-service_1
8088/tcp, 0.0.0.0:5082->5005/tcp, 0.0.0.0:8082->8080/tcp employee-app_employee-service_1
8088/tcp, 0.0.0.0:8011->8061/tcp employee-app_discovery-service_1
8088/tcp, 0.0.0.0:8012->8080/tcp employee-app_config-service_1
这必须是我最可耻的第 8 层问题之一。 boostrap.yml != bootstrap.yml。我确实花了三天时间。我不确定我是在生自己的气还是感到羞耻。我希望你会笑我:-)