k8s部署gateway、nacos 、app通过网关访问app出现404
·
server:
port: 9996
spring:
security:
user:
name: admin
password: 123456
cloud:
gateway:
enabled: true
loadbalancer:
use404: true
discovery:
locator:
enabled: true
lower_case_service_id: true
routes:
- id: baidu
uri: https://www.baidu.com
predicates:
- Path=/baidu
filters:
- StripPrefix=1
- id: path
uri: http://127.0.0.1:8090
predicates:
- Path=/demo
filters:
- StripPrefix=1
- id: nacos
uri: http://10.10.10.99:30018/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=&pageSize=&pageNo=
predicates:
- Path=/nacos
filters:
- StripPrefix=1
#设置的id是dubbo-starter-reference
- id: reference
#网关不设置上下问,服务存在上下问情况
#找不到lb实例,这种写法管用的 http://dubbo-starter-reference:9997,-Path设置为 - Path=/dubbo-reference/**
uri: lb://dubbo-starter-reference
predicates:
- Path=/reference/**
filters:
##由于微服务dubbo-starter-reference中设置了server.servlet.context-path=/dubbo-starter-reference,要重写路径才能正常路由到该微服务
- RewritePath=/reference/?(?<segment>.*), /dubbo-starter-reference/$\{segment}
management:
endpoint:
gateway:
#默认是true
enabled: true
endpoints:
web:
exposure:
#一直存在的
include: "*"
hystrix:
command:
default:
execution:
isolation:
strategy: SEMAPHORE
thread:
timeoutInMilliseconds: 3000
shareSecurityContext: true
上面是网关的简单配置,使用http://dubbo-starter-reference:9997可以访问成功
进入gateway的pod容器,连接dubbo-starter-reference实例正常,
将uri: lb://dubbo-starter-reference,访问接口出现404的错误。
描述:pom.xml描述,配置了actuator,并且application.yaml中设置

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.3</version> <relativePath/> </parent> <artifactId>gateway-gateway</artifactId> <name>gateway-gateway</name> <version>0.0.1-SNAPSHOT</version> <properties> <swagger.version>2.9.2</swagger.version> </properties> <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.6</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2021.0.1.0</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2021.0.1.0</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> <version>3.1.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.1.1</version> </dependency> <!--配置文件处理器--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>3.1.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> </plugins> </build> </project>
访问网关的接口发现
http://10.10.10.99:32222/actuator/gateway/routes
存在一些配置,ReactiveCompositeDiscoveryClient,非手动配置的,应该和上面的配置有关系
想访问微服务dubbo-starter-reference,基于路径的匹配有两个,服务都是在nacos(2.0.3)上注册的。
注册信息正常。
自动出现的路由映射,微服务访问是没有上下文的。
而实际dubbo-starter-reference微服务的上下文是/dubbo-starter-reference
不知道为什么会访问自动出现的那个,而那个配置路径没有dubbo-starter-reference前缀
所以这里重新定义了一个区分/dubbo-starter-reference前缀的映射
- id: reference
#网关不设置上下问,服务存在上下问情况
#找不到lb实例,这种写法管用的 http://dubbo-starter-reference:9997,-Path设置为 - Path=/dubbo-reference/**
uri: lb://dubbo-starter-reference
predicates:
- Path=/reference/**
filters:
##由于微服务dubbo-starter-reference中设置了server.servlet.context-path=/dubbo-starter-reference,要重写路径才能正常路由到该微服务
- RewritePath=/reference/?(?<segment>.*), /dubbo-starter-reference/$\{segment}
通过网关访问便是
http://网关ip:网关端口/reference/dubbo-reference/v1,经过上面的RewritePath配置
网关实际转发的地址是/dubbo-starter-reference/dubbo-reference/v1
[
{
"predicate": "Paths: [/dubbo-starter-provider/**], match trailing slash: true",
"metadata": {
"nacos.instanceId": "10.233.92.88#9998#DEFAULT#DEFAULT_GROUP@@dubbo-starter-provider",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"preserved.register.source": "SPRING_CLOUD"
},
"route_id": "ReactiveCompositeDiscoveryClient_dubbo-starter-provider",
"filters": [
"[[RewritePath /dubbo-starter-provider/?(?<remaining>.*) = '/${remaining}'], order = 1]"
],
"uri": "lb://dubbo-starter-provider",
"order": 0
},
{
"predicate": "Paths: [/skywalking_oap_cluster/**], match trailing slash: true",
"metadata": {
"nacos.instanceId": "0.0.0.0#11800#DEFAULT#DEFAULT_GROUP@@SkyWalking_OAP_Cluster",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"nacos.ephemeral": "true",
"nacos.healthy": "true"
},
"route_id": "ReactiveCompositeDiscoveryClient_SkyWalking_OAP_Cluster",
"filters": [
"[[RewritePath /skywalking_oap_cluster/?(?<remaining>.*) = '/${remaining}'], order = 1]"
],
"uri": "lb://SkyWalking_OAP_Cluster",
"order": 0
},
{
"predicate": "Paths: [/providers:com.turboic.cloud.service.swaggeruserinfoservice:1.0.0:liebe/**], match trailing slash: true",
"metadata": {
"nacos.instanceId": "10.233.92.88#20880#DEFAULT#DEFAULT_GROUP@@providers:com.turboic.cloud.service.SwaggerUserInfoService:1.0.0:liebe",
"methods": "getUser",
"release": "2.7.7",
"deprecated": "false",
"dubbo": "2.0.2",
"pid": "1",
"interface": "com.turboic.cloud.service.SwaggerUserInfoService",
"path": "com.turboic.cloud.service.SwaggerUserInfoService",
"protocol": "dubbo",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"dynamic": "true",
"anyhost": "true",
"architecture": "dubbo-spring-boot",
"group": "liebe",
"timestamp": "1662891350562",
"side": "provider",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"version": "1.0.0",
"generic": "false",
"revision": "0.0.1-SNAPSHOT",
"application": "dubbo-starter-provider",
"category": "providers"
},
"route_id": "ReactiveCompositeDiscoveryClient_providers:com.turboic.cloud.service.SwaggerUserInfoService:1.0.0:liebe",
"filters": [
"[[RewritePath /providers:com.turboic.cloud.service.swaggeruserinfoservice:1.0.0:liebe/?(?<remaining>.*) = '/${remaining}'], order = 1]"
],
"uri": "lb://providers:com.turboic.cloud.service.SwaggerUserInfoService:1.0.0:liebe",
"order": 0
},
{
"predicate": "Paths: [/dubbo-starter-reference/**], match trailing slash: true",
"metadata": {
"nacos.instanceId": "10.233.92.87#9997#DEFAULT#DEFAULT_GROUP@@dubbo-starter-reference",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"preserved.register.source": "SPRING_CLOUD"
},
"route_id": "ReactiveCompositeDiscoveryClient_dubbo-starter-reference",
"filters": [
"[[RewritePath /dubbo-starter-reference/?(?<remaining>.*) = '/${remaining}'], order = 1]"
],
"uri": "lb://dubbo-starter-reference",
"order": 0
},
{
"predicate": "Paths: [/consumers:com.turboic.cloud.service.swaggeruserinfoservice:1.0.0:liebe/**], match trailing slash: true",
"metadata": {
"nacos.instanceId": "10.233.92.87#0#DEFAULT#DEFAULT_GROUP@@consumers:com.turboic.cloud.service.SwaggerUserInfoService:1.0.0:liebe",
"methods": "getUser",
"release": "2.7.7",
"dubbo": "2.0.2",
"pid": "1",
"interface": "com.turboic.cloud.service.SwaggerUserInfoService",
"qos.enable": "false",
"path": "com.turboic.cloud.service.SwaggerUserInfoService",
"protocol": "consumer",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"architecture": "dubbo-spring-boot2",
"group": "liebe",
"timestamp": "1662891404956",
"init": "false",
"side": "consumer",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"check": "false",
"version": "1.0.0",
"revision": "0.0.1-SNAPSHOT",
"application": "dubbo-starter-reference",
"sticky": "false",
"category": "consumers"
},
"route_id": "ReactiveCompositeDiscoveryClient_consumers:com.turboic.cloud.service.SwaggerUserInfoService:1.0.0:liebe",
"filters": [
"[[RewritePath /consumers:com.turboic.cloud.service.swaggeruserinfoservice:1.0.0:liebe/?(?<remaining>.*) = '/${remaining}'], order = 1]"
],
"uri": "lb://consumers:com.turboic.cloud.service.SwaggerUserInfoService:1.0.0:liebe",
"order": 0
},
{
"predicate": "Paths: [/gateway/**], match trailing slash: true",
"metadata": {
"nacos.instanceId": "10.233.92.105#9996#DEFAULT#DEFAULT_GROUP@@gateway",
"nacos.weight": "1.0",
"nacos.cluster": "DEFAULT",
"nacos.ephemeral": "true",
"nacos.healthy": "true",
"preserved.register.source": "SPRING_CLOUD"
},
"route_id": "ReactiveCompositeDiscoveryClient_gateway",
"filters": [
"[[RewritePath /gateway/?(?<remaining>.*) = '/${remaining}'], order = 1]"
],
"uri": "lb://gateway",
"order": 0
},
{
"predicate": "Paths: [/baidu], match trailing slash: true",
"route_id": "baidu",
"filters": [
"[[StripPrefix parts = 1], order = 1]"
],
"uri": "https://www.baidu.com:443",
"order": 0
},
{
"predicate": "Paths: [/demo], match trailing slash: true",
"route_id": "path",
"filters": [
"[[StripPrefix parts = 1], order = 1]"
],
"uri": "http://127.0.0.1:8090",
"order": 0
},
{
"predicate": "Paths: [/nacos], match trailing slash: true",
"route_id": "nacos",
"filters": [
"[[StripPrefix parts = 1], order = 1]"
],
"uri": "http://10.10.10.99:30018/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=&pageSize=&pageNo=",
"order": 0
},
{
"predicate": "Paths: [/reference/**], match trailing slash: true",
"route_id": "reference",
"filters": [
"[[RewritePath /reference/?(?<segment>.*) = '/dubbo-starter-reference/${segment}'], order = 1]"
],
"uri": "lb://dubbo-starter-reference",
"order": 0
}
]
更多推荐
所有评论(0)