Docker 部署 Nacos 2.3.2 开启鉴权无法访问控制台

背景

由于业务需要,本人需要升级项目中使用到的微服务技术栈的版本,在将 nacos 从 2.0.3 升级到 2.3.2 时遇到一些问题,特此记录一下。

问题一、权限校验问题

使用 docker 安装 nacos 2.2.2以后的版本需要自定义下面三个环境变量

# 一般用于自定义功能时鉴权,可以在请求头带上该key用以鉴权,详情看官方文档
NACOS_AUTH_IDENTITY_KEY=xxxxx
# 一般用于自定义功能时鉴权,可以在请求头带上该value用以鉴权,详情看官方文档
NACOS_AUTH_IDENTITY_VALUE=xxxxx
# jwt生成时使用的密钥,最少32Bytes,使用base64加密
NACOS_AUTH_TOKEN=xxxxx

详情可以参考:
Nacos 官方文档
Nacos Docker 官方文档

问题二、docker 部署后无法访问控制台的问题

按照上述步骤成功部署,并且能连接上nacos后,发现浏览器访问时始终会报403:

type=Forbidden, status=403

Invalid server identity key or value, Please make sure set `nacos.core.auth.server.identity.key` and `nacos.core.auth.server.identity.value`, or open `nacos.core.auth.enable.userAgentAuthWhite`

后来经过排查,发现是下面这个环境变量出现问题

-e NACOS_AUTH_IDENTITY_VALUE=pg.R#b2c4.ANvh!IA14Z

直接把其中的特殊符号去掉,然后再重启就行了

以下提供一个我自己能用的 docker 脚本,当然我后来用不同的密码重新部署了一次,所以这些信息就没用了,建议你们复制脚本后也改一下其中的敏感信息:

docker run -d \
-e MODE=standalone \
-e JVM_XMS=128m \
-e JVM_XMX=128m \
-e JVM_XMN=128m \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xxxxxx \
-e MYSQL_SERVICE_PORT=xxxx \
-e MYSQL_SERVICE_USER=xxxxxx\
-e MYSQL_SERVICE_PASSWORD=xxxxxxxx \
-e MYSQL_SERVICE_DB_NAME=xxxxxxx \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_IDENTITY_KEY=xxxxxxxx \
-e NACOS_AUTH_IDENTITY_VALUE=pgRb2c4ANvhIA14Z \
-e NACOS_AUTH_TOKEN=NStQdHM3WCU3RVYlMjRZdG04aUolMkM3JTJDQnhyUCU1RXFMJTIxaiUyOCUyM1JZ \
-p 8848:8848 \
-p 9848:9848 \
--restart=always \
--privileged=true \
--name nacos nacos/nacos-server:v2.3.2
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐