本来老师是让我们写一篇关于Gateway 路由规范使用的博客的,鉴于Spring官方文档已经写得非常详细了,所以这里就把今天踩过的坑解决方案记录一下,让后来的人少走弯路
Nacos镜像版本
v1.4.6-slim
容器参数
建立容器的时候有很多参数必须指定一下。跟老师提供的jar包已经配置好不一样,刚下下来的镜像,不知道是版本问题还是太干净的问题,运行起来后(假设你可以),按用户名/密码=nacos登录是不行的
需要在创建容器的时候设置以下参数:
- MODE=standalone
- NACOS_AUTH_ENABLE=true
下面的参数按需修改,但必要
- NACOS_USERNAME=nacos
- NACOS_PASSWORD=nacos
- NACOS_CORE_AUTH_SERVER_IDENTITY_KEY=4f8b4a22e5b9f9b1a1e93d1a2e8b8d1c
- NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE=7d3c58ea9a9b4f3b8a33a9d46a9e4abc
然后需要去容器的application.properties(/home路径下找一找)里加一个参数:
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
运行
全部搞定的话,用浏览器访问
http://localhost:{Nacos端口号}/nacos/#/login
输入用户名和密码应该就能进入了,不会提示【用户名或密码错误】
如果提示【用户名或密码错误】,点开F12查看原因,大概率是NACOS_CORE_AUTH_SERVER_IDENTITY_KEY、NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE、nacos.core.auth.default.token.secret.key这三个参数设置得有问题
其他
Nacos版本和Spring Cloud版本不兼容的问题好像蛮常见的。
这里把我使用的Spring Cloud Alibaba配置分享一下(openfeign/gateway已测试完毕无误)
1、打包方式
<packaging>pom</packaging>
2、Spring Boot版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
</parent>
<properties>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
3、Spring Cloud版本
<properties>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
4、Spring Cloud Alibaba版本
<properties>
<spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>