SpringCloudAlibaba微服务 【实用篇】| Nacos配置管理

目录

一:Nacos配置管理

[1. 统一配置管理](#1. 统一配置管理)

[2. 配置热更新](#2. 配置热更新)

[3. 配置共享](#3. 配置共享)

[4. 搭建Nacos集群](#4. 搭建Nacos集群)


tips :前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,感兴趣的同学可以进行学习人工智能学习网站

一:Nacos配置管理

Nacos除了可以做注册中心(前面已经讲了),同样可以做配置管理来使用!

1. 统一配置管理

当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。

Nacos一方面可以将配置集中管理 ,另一方可以在配置变更时,及时通知微服务,实现配置的热更新

如何在nacos中管理配置呢?

登录nacos的控制界面

然后在弹出的表单中,填写配置信息:

注意:这里项目的核心配置application.yml不是全都一下子都放到nacos配置管理;只有需要热更新的配置才有放到nacos管理的必要。基本不会变更的一些配置还是保存在微服务本地aaplication.yml当中比较好。

从微服务拉取配置

**注:**在没有Nacos时项目启动后直接读取本地的application.yml配置。

**注:**有了Nacos微服务要拉取nacos中管理的配置,并且与本地的application.yml配置合并,才能完成项目启动!

思考: Nacos去哪读取?读取谁?

注: 在读取Nacos的配置文件时,要知道Nacos的服务地址,而Nacos的服务地址又是在application.yml中进行配置的(这就形成了一个死循环);所以要先提前知道Nacos的地址才行,这样才能读取到Nacos的配置文件。因此spring引入了一种新的配置文件:bootstrap.yaml文件,会在application.yml之前被读取,流程如下:

所以关于Nacos的配置信息应该都放到bootstrap.yaml配置当中;具体流程如下:

第一步:引入Nacos的配置管理客户端依赖

注: Nacos作为注册中心 引入的是nacos-discovery 依赖,作为配置管理 引入的是nacos-config依赖。

XML 复制代码
 <!-- nacos 配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第二步:在user-service中的resource目录添加一个bootstrap.yml 文件,这个文件是引导文件,优先级高于application.yml

**注:**下面的三要素的结合实际上就是与前面的Nacos管理配置的Data ID相对应。

javascript 复制代码
spring:
  application:
    name: user-service #服务名称,三要素之一
  profiles:
    active: dev #环境,三要素之二
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      config:
        file-extension: yaml # 文件后缀名,三要素之三

验证:到底没有没有拉取成功呢?我们就获取一下里面的配置属性

**注:**前面几节我们使用了dev命名空间,这里需要把order-servicenamespace属性配置删除掉;不然跨空间访问是不行的。

java 复制代码
package cn.itcast.user.web;

import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
    
    // 使用@Value注解访问配置的属性
    @Value("${pattern.dateformat}")
    private String dateformat;

    @GetMapping("/now")
    public String now(){
        // 返回当前的时间
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
    }

}

成功获取到格式化后的时间,表明成功获取到配置

将配置交给Nacos管理的步骤:

①在Nacos控制台中添加配置文件;

②在微服务中引入nacos的config依赖;

③在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件。

2. 配置热更新

我们最终的目的,是修改Nacos中的配置后,微服务中无需重启即可让配置生效,也就是配置热更新。 要实现配置热更新,可以使用两种方式:

第一种方式:在**@Value** 注入的变量所在类上添加注解**@RefreshScope**(刷新范围)

第二种方式:使用**@ConfigurationProperties**注解(建议使用的方式)

新建一个类专门完成属性的加载,此时先注入一个Java对象当中去!

Java类:与配置文件的属性进行绑定

java 复制代码
package cn.itcast.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "pattern") // 指定前缀
public class PatternProperties {
    private String dateformat;
}

此时就不需要@RefreshScope注解,也不需要@Value注解,直接注入类

java 复制代码
package cn.itcast.user.web;

import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@RestController
@RequestMapping("/user")
// @RefreshScope
public class UserController {


   /* @Value("${pattern.dateformat}")
    private String dateformat;*/
    // 注入Java类
    @Autowired
    private PatternProperties properties;

    @GetMapping("/now")
    public String now(){
        // 返回当前的时间
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat())); // 调用类的get方法拿到值
    }


}

总结:

Nacos配置更改后,微服务可以实现热更新,方式:

①通过@Value注解注入,结合@RefreshScope来刷新;这种方式是取出配置的属性直接使用。

②通过@ConfigurationProperties注入,自动刷新;这种方式是先把配置的属性与一个Java类绑定,然后使用Java类调属性的方式。

注意事项:

①不是所有的配置都适合放到配置中心,维护起来比较麻烦;

②建议将一些关键参数,需要运行时调整的参数放到nacos配置中心,一般都是自定义配置;

3. 配置共享

多环境配置共享

例:对于一个配置在开发、测试和上线都需要的配置,只需要写一份即可,然后进行共享!

微服务启动时会从nacos读取多个配置文件:

①[spring.application.name]-[spring.profiles.active].yaml,例如:user-service-dev.yaml;

②[spring.application.name].yaml,例如:user-service.yaml。

无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件!

第一步:添加一个环境共享配置

在nacos中添加一个user-service.yaml文件(这个文件默认就会被加载进去的)。

第二步:在user-service中读取共享配置

在user-service服务中,修改PatternProperties类,读取新添加的属性

注:这个类实际上封装的是user-service-dev.yaml和user-serviceyaml配置的总和!

java 复制代码
package cn.itcast.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "pattern") // 指定前缀
public class PatternProperties {
    private String dateformat;
    // 添加新的属性
    private String envShareValue;
}

在user-service服务中,修改UserController,添加一个方法

java 复制代码
package cn.itcast.user.web;

import cn.itcast.user.config.PatternProperties;
import cn.itcast.user.pojo.User;
import cn.itcast.user.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
    // 注入Java类
    @Autowired
    private PatternProperties properties;

    // 多环境共享测试
    @GetMapping("/prop")
    public PatternProperties prop(){
        return properties;
    }
    

}

第三步:运行两个UserApplication,使用不同的profile

(1)前面我们配置的是dev环境,所以此时能读取到user-service-dev.yaml配置(拿到的是dateformat属性)和 user-service.yaml配置(拿到的是envSharedValue属性);此时两个值都能读取到。

(2)此时把环境改为test,重新启动一个实例,对于Nacos控制中心并没有进行test环境的任何配置,此时dateformat属性的结果应该null。但是user-service.yaml配置默认还是能拿到的,此时envShareValue属性的值还是能正常拿到的。

思考:当Nacos、服务本地application.yaml同时出现相同属性时,优先级有高低之分

(1)首先远程的Nacos的配置 大于 服务本地的而配置;

(2)在全是Nacos的配置下,user-service-dev.yaml 大于 user-service.yaml;

服务名-profile.yaml >服务名称.yaml > 本地配置

服务会从nacos读取的配置文件:

①[服务名]-[spring.profile.active].yaml,具体环境配置;

②[服务名].yaml,默认配置,多环境共享使用;

③优先级:[服务名]-[环境].yaml >[服务名].yaml > 本地配置;

4. 搭建Nacos集群

Nacos生产环境下一定要部署为集群状态,所以接下来就学习一下集群部署!

其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx,计划的集群结构:

三个nacos节点的地址:

节点 ip port
nacos1 192.168.150.1 8845
nacos2 192.168.150.1 8846
nacos3 192.168.150.1 8847

第一步: 搭建数据库nacos,初始化数据库表结构

sql 复制代码
CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) DEFAULT NULL,
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) DEFAULT NULL,
  `c_use` varchar(64) DEFAULT NULL,
  `effect` varchar(64) DEFAULT NULL,
  `type` varchar(64) DEFAULT NULL,
  `c_schema` text,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_aggr   */
/******************************************/
CREATE TABLE `config_info_aggr` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  `content` longtext NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_beta   */
/******************************************/
CREATE TABLE `config_info_beta` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_info_tag   */
/******************************************/
CREATE TABLE `config_info_tag` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL COMMENT 'content',
  `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  `src_user` text COMMENT 'source user',
  `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = config_tags_relation   */
/******************************************/
CREATE TABLE `config_tags_relation` (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`),
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = group_capacity   */
/******************************************/
CREATE TABLE `group_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';

/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = his_config_info   */
/******************************************/
CREATE TABLE `his_config_info` (
  `id` bigint(64) unsigned NOT NULL,
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  `content` longtext NOT NULL,
  `md5` varchar(32) DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `src_user` text,
  `src_ip` varchar(50) DEFAULT NULL,
  `op_type` char(10) DEFAULT NULL,
  `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`),
  KEY `idx_gmt_create` (`gmt_create`),
  KEY `idx_gmt_modified` (`gmt_modified`),
  KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';


/******************************************/
/*   数据库全名 = nacos_config   */
/*   表名称 = tenant_capacity   */
/******************************************/
CREATE TABLE `tenant_capacity` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';


CREATE TABLE `tenant_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';

CREATE TABLE `users` (
	`username` varchar(50) NOT NULL PRIMARY KEY,
	`password` varchar(500) NOT NULL,
	`enabled` boolean NOT NULL
);

CREATE TABLE `roles` (
	`username` varchar(50) NOT NULL,
	`role` varchar(50) NOT NULL,
	UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);

CREATE TABLE `permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);

INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

第二步:下载Nacos

nacos在GitHub上有下载地址:Tags · alibaba/nacos · GitHub,可以选择任意版本下载。

第三步:配置Nacos集群

①进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf

然后添加内容:

bash 复制代码
#IP地址和端口号
172.16.43.49:8845
172.16.43.49:8846
172.16.43.49:8847

②修改application.properties文件,添加数据库配置

bash 复制代码
# 第33行去掉注释,表示使用mysql的集群
spring.datasource.platform=mysql
#第36行去掉注释,表示集群的数量
db.num=1
# 第39行开始配数据库的信息
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

第四步:启动

将nacos文件夹复制三份,分别命名为:nacos1、nacos2、nacos3

然后分别修改三个文件夹中的application.properties,配置不同的端口号

nacos1:

bash 复制代码
server.port=8845

nacos2:

bash 复制代码
server.port=8846

nacos3:

bash 复制代码
server.port=8847

然后分别启动三个nacos节点

bash 复制代码
startup.cmd #不需要-m参数,默认就是集群的方式启动

第五步:nginx反向代理

下载并解压到任意非中文目录下:

①修改conf/nginx.conf文件,配置如下

bash 复制代码
#以下配置只要放到http下面都可以
upstream nacos-cluster {
    # 集群中的nacos
    server 127.0.0.1:8845;
	server 127.0.0.1:8846;
	server 127.0.0.1:8847;
}

server {
    # 反向代理的内容
    listen       80; # 以后不需要8848直接80就可以
    server_name  localhost;

    location /nacos { # 只要访问这个;路径,就能代理到上面的集群当中
        proxy_pass http://nacos-cluster;
    }
}

启动nginx:

在浏览器访问:http://localhost/nacos即可

代码中bootstrap.xml文件配置: 把8848改成80

bash 复制代码
spring:
  cloud:
    nacos:
      server-addr: localhost:80 # Nacos地址

添加配置:

这个配置就会自动存入数据库当中:

相关推荐
程序猿零零漆1 小时前
SpringCloud系列教程:微服务的未来(二十)Seata快速入门、部署TC服务、微服务集成Seata
java·spring·spring cloud·微服务
Miketutu11 小时前
Spring MVC消息转换器
java·spring
小小虫码13 小时前
项目中用的网关Gateway及SpringCloud
spring·spring cloud·gateway
Linux运维老纪13 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
带刺的坐椅18 小时前
无耳科技 Solon v3.0.7 发布(2025农历新年版)
java·spring·mvc·solon·aop
精通HelloWorld!21 小时前
使用HttpClient和HttpRequest发送HTTP请求
java·spring boot·网络协议·spring·http
LUCIAZZZ1 天前
基于Docker以KRaft模式快速部署Kafka
java·运维·spring·docker·容器·kafka
拾忆,想起1 天前
如何选择Spring AOP的动态代理?JDK与CGLIB的适用场景
spring boot·后端·spring·spring cloud·微服务
zhuyasen1 天前
多维度详细比较 kratos、go-zero、goframe、sponge 框架
后端·http·微服务·rpc·golang
鱼骨不是鱼翅1 天前
Spring Web MVC基础第一篇
前端·spring·mvc