记录一次修改nacos安全问题导致服务调用出现404
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配置修改重新走网关即可。