记录一次修改nacos安全问题导致服务调用出现404

248 阅读2分钟

 1、nacos默认值修改
nacos.core.auth.plugin.nacos.token.secret.key=****
nacos.core.auth.server.identity.key=********
nacos.core.auth.server.identity.value=************

 重启nacos, 这时候微服务的token认证会立即失效,等待自动重连认证或者手动重启服务

2、重新修改生成环境nacos用户名和密码

客户端修改

spring:
  cloud:
    nacos:
      discovery:
        username: ****
        password: ****
      config:
        username: ****
        password: ****

重启服务,检查nacos控制台服务是否注册正常

3、修改spring cloud gateway的nacos配置

修改配置后重启,验证路由是否正确,打开actuator端点:

management:
  endpoints:
    web:
      exposure:
        include: 'gateway,health'  # 暴露 gateway 和 health 端点
  endpoint:
    gateway:
      enabled: true  # 显式启用网关端点
    health:
      show-details: always  # 显示健康检查详情

spring:
  cloud:
    gateway:
      routes:
        - id: ****
          uri: lb://****  # 或直接写 http://后端服务IP:端口
          predicates:
            - Path=/路径/**
          filters:
            - StripPrefix=1    # 根据需要调整

路由检查:

 curl http://ip:端口/actuator/gateway/routes

如果返回[],则没找到路由信息,检查配置或者服务是否正确注册到nacos上了,我这次出现访问服务的时候,一直报404错误,发现配置有变动,少了一个gateway导致

4、单点部署nacos、gateway要注意的问题

重启nacos或者gateway服务会中断,所以首先要在业务低峰期执行,最好是晚上12点之后。

如果想要稳定迁移,可以通过配置nginx来实现,首先是nginx能够直接访问后端服务,先绕过nacos和gateway, nginx配置示例如下:

upstream upcms {
     server ip1:端口1;
     server ip2:端口2;
}

location /cms {
    #proxy_pass http://网关ip:网关端口/api/cms;
    proxy_pass http://upcms/cms;
}

在网关、nacos服务重启后,nginx配置修改重新走网关即可。