nacos配置&gateway配置服务发现一直报500

nacos配置&gateway配置服务发现一直报500

项目场景:

这两天不是一直在搞简化配置、使用公共配置、我的服务可以通过网关访问这几个任务嘛,也是不断地踩坑补知识才总算把这几个任务都搞好了,下面就是记录过程中遇到的问题。

使用公共配置

因为发现项目使用的配置文件过多,有application、application-test.yml、bootstrap.yml、远程nacos配置,我想不能搞得简单些就尽量把所有配置都放到线上,本地只是做区分么,然后自己恶补了下application和bootstrap区别

application和bootstrap区别和优先级

顺序:bootstrap.properties > bootstrap.yml > application.properties > application.yml

优先级:properties>yml

文件位置优先级:

src里的config文件夹>>根目录>>resource里的config文件夹>>resource下的

小结:

同样的yml,bootstrap比application优先级高,是由父上下文加载的,而application是由子加载

bootstrap一般配置的是引导配置,连接的是spring cloud配置中心,默认本地不能覆盖远程配置,远程配置一些加密的信息

使用公共配置common.yml

直接上配置代码,注意

参数里面

chixxxxx:

  nacos:

    server-addr: 123.123.000.000:8848

spring:

  profiles:

    active: test

  application:

    name: chixxxxx-gateway

    group: chixxxxx_GROUP

  cloud:

    nacos:

      discovery:

        group: ${spring.application.group}

        namespace: ${spring.profiles.active}

        server-addr: ${chixxxxx.nacos.server-addr}

      config:

        group: ${spring.application.group}

        namespace: ${spring.profiles.active}

        server-addr: ${chixxxxx.nacos.server-addr}

        prefix: ${spring.application.name}

        shared-configs:

          - data-id: common.yml

            group: ${spring.application.group}

        extension-configs:

          - data-id: chixxxxx-gateway-test.yml

            group: ${spring.application.group}

配置网关服务

我之前上家公司是配过网关的,其实就是指定服务+断言路径就行了,但是这边还是有点区别,首先是nginx.conf那边,先做了个匹配路径转发到网关的一个操作,如下

location /api/backend/ {

                proxy_pass http://localhost:8001;

            }

提前转发到网关,然后网关配置

- id: platform后台接口

        uri: lb://chixxxx-platform

        order: 1000

        predicates:

          - Path=/api/backend/**

        filters:

          - StripPrefix=0

          - name: RequestRateLimiter

            args:

              key-resolver: '#{@hostAddrKeyResolver}'

              redis-rate-limiter:

                replenishRate: 20

                burstCapacity: 50

这里面尤其要注意的是StripPrefix这个参数,之前没有太注意,还弄出个404,看了些讲解才知道这个就是去掉我一开始请求的路径上的字符,如:StripPrefix=1,那么请求到服务就是backend/user/detail?id=1;StripPrefix=2,user/detail?id=1,这个数字代表去掉几个/分割的字符串。

请求服务转发失败

这个又是什么呢,我照样子请求url,但是返回报500,然后我查看了下日志

ERROR 1399157 [reactor-http-epoll-4] org.springframework.boot.autoconfigure.web.reactive.error.AbstractErrorWebExceptionHandler [bfc53f9d-5959] 500 Server Error for HTTP GET "/api/backend/appVersion/detail?id=12"

就是服务器错误,我再看目标服务器上的日志,没有新增日志,然后就因为报错信息有限,我前前后后花了靠一天时间最后通过“同义千问”找到灵感-好好对一下服务状态是否正常,打开:服务列表-服务详情,看到健康状态是ture啊,那为啥报500,再看ip地址,这个ip写的是:172.17.0.5这个好像docker或者内网地址啊,一开始怀疑内网,但是想想不会啊,我的服务器在外头的,然后再去目标服务器执行:docker inspect xxx,看到就是这个,哦~原来把docker分配的ip注册到nacos上了,我应该是要把服务器ip注册上去,通过千问需要设置

spring:

  cloud:

    nacos:

      discovery:

        ip: 123.123.123.123

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牛马程序员24

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

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

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

打赏作者

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

抵扣说明:

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

余额充值