采用的版本是Nacos Release 2.3.0 (Nov 30, 2023) · alibaba/nacos · GitHub
依赖于jdk,要先安装好jdk1.8+。
修改配置
下载解压后,修改配置文件:conf/application.properties。
nacos.core.auth.plugin.nacos.token.secret.key
官方文档Nacos 快速开始的部分描述,如下:
3.修改配置文件
在2.2.0.1和2.2.1版本时,必须执行此变更,否则无法启动;其他版本为建议设置。
修改
conf
目录下的application.properties
文件。设置其中的
nacos.core.auth.plugin.nacos.token.secret.key
值,详情可查看鉴权-自定义密钥.注意,文档中的默认值
SecretKey012345678901234567890123456789012345678901234567890123456789
和VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
为公开默认值,可用于临时测试,实际使用时请务必更换为自定义的其他有效值。
这里选的2.3版本,所以nacos.core.auth.plugin.nacos.token.secret.key一定要自己设置。
官方文档Authorization的"服务端如何开启鉴权"->"非Docker环境"部分的描述,如下:
服务端如何开启鉴权
非Docker环境
按照官方文档配置启动,默认是不需要登录的,这样会导致配置中心对外直接暴露。而启用鉴权之后,需要在使用用户名和密码登录之后,才能正常使用nacos。
开启鉴权之前,application.properties中的配置信息为:
### If turn on auth system: nacos.core.auth.enabled=false
开启鉴权之后,application.properties中的配置信息为:
### If turn on auth system: nacos.core.auth.system.type=nacos nacos.core.auth.enabled=true
自定义密钥
开启鉴权之后,你可以自定义用于生成JWT令牌的密钥,application.properties中的配置信息为:
注意:
- 文档中提供的密钥为公开密钥,在实际部署时请更换为其他密钥内容,防止密钥泄漏导致安全风险。
- 在2.2.0.1版本后,社区发布版本将移除以文档如下值作为默认值,需要自行填充,否则无法启动节点。
- 密钥需要保持节点间一致,长时间不一致可能导致403 invalid token错误。
### The default token(Base64 String): nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789### 2.1.0 版本后 nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。例如下面的的例子:
### The default token(Base64 String): nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=### 2.1.0 版本后 nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
注意:鉴权开关是修改之后立马生效的,不需要重启服务端。动态修改
token.secret.key
时,请确保token是有效的,如果修改成无效值,会导致后续无法登录,请求访问异常。
这里说明了这个nacos.core.auth.plugin.nacos.token.secret.key具体如何设置,就是推荐设置为1个字符串的Base64编码,要求原始字符串长度不低于32字符,注意是原始字符串长度,不是编码后的长度。
Base64编码可以用这个:Base64在线加密解密-在线Base64加密解密工具-Base64编码解码工具
举例,用Base64编码:
secretkey1234567891011121314151617 => c2VjcmV0a2V5MTIzNDU2Nzg5MTAxMTEyMTMxNDE1MTYxNw==
nacos.core.auth.server.identity.key、nacos.core.auth.server.identity.value
这两个用默认值即可,或者自己设置。这两个还是要设置的,不设置会报错。
默认值在这里,Authorization
汇总
一共修改了这几个参数:
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.secret.key=自己设置的字符串Base64编码(注意原字符串长度大于32)
启动
参考Nacos 快速开始的这部分:
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
可以修改启动命令startup.sh中的模式,改为standalone,之后启动就不用带-m standalone
:
启动:
成功的话,查看日志文件:
点击进入,是这个样子:
输入用户名密码,默认都是nacos,进入后如下:
可能的报错
关于libstdc++.so.6
/tmp/librocksdbjni7062971986421308051.so: libstdc++.so.6: cannot open shared object file: No such file or directory
参考libstdc++.so.6: cannot open shared object file: No such file or directory问题的解决-CSDN博客
权限认证失败 没有命名空间的访问权限
链接后面的参数有namespace,估计是要配命名空间,把后面的参数都删掉:http://xxx:8848/nacos/index.html#/login,这样就行了。
用户名密码
默认都是nacos。要修改的话,在界面修改,或者到nacos数据库中修改。
界面修改
数据库修改
需要配置数据库,数据库配置参考官方文档:Nacos支持三种部署模式,如下:
单机模式支持mysql
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力,具体的操作步骤:
- 1.安装数据库,版本要求:5.6.5+
- 2.初始化mysql数据库,数据库初始化文件:mysql-schema.sql
- 3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
spring.datasource.platform=mysqldb.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos_devtest db.password=youdontknow
再以单机模式启动nacos,nacos所有写嵌入式数据库的数据都写到了mysql
这里需要自己装好mysql,然后创建数据库nacos_devtest(其他名字也可以),运行conf/mysql-schema.sql的sql。运行完如下:
注意,nacos2.3版本的配置文件这里是这样:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
# spring.datasource.platform=mysql
spring.sql.init.platform=mysql
就是说在nacos2.3版本,“spring.datasource.platform=mysq"配置已经弃用了,要用下面的"spring.sql.init.platform=mysql”,否则会出错。
密码修改,参考Nacos修改密码 - Antony_hubei - 博客园。
有错误帮忙指正,谢谢。