springcloud config 配置访问

springcloud http请求地址和资源文件映射如下:

/ { 应用名 } / { 环境名 } [ / { 分支名 } ]
/ { 应用名 } - { 环境名 }.yml
/ { 应用名 } - { 环境名 }.properties
/ { 分支名 } / { 应用名 } - { 环境名 }.yml
/ { 分支名 } / { 应用名 } - { 环境名 }.properties

label 分支名 配置文件的分支,默认是master。
application 应用名
profile 环境名 (dev test pro)

## 正常的访问方式
http://localhost:8002/master/mango-admin-dev.yml  
http://localhost:8002/mango-eureka/dev/master/
## 如果 spring.cloud.config.server.git.searchPaths:/** 配置时可以使用下面的方式访问配置
http://localhost:8002/mango-admin/mango-admin-dev.yml/master/mango-admin-dev.yml
http://localhost:8002/mango-eureka/mango-eureka/master/mango-eureka-dev.yml
http://localhost:8002/test/test1/master/mango-eureka-dev.yml

springcloud config配置

config 常用配置说明

spring.cloud.config.server.git.uri:配置git仓库地址
spring.cloud.config.server.git.searchPaths:配置仓库路径
spring.cloud.config.label:配置仓库的分支 (如果是是本地获取的话,则无用)
pring.cloud.config.profile:指定环境 (dev开发环境 test测试环境 prod正式环境)
spring.cloud.config.server.git.username:访问git仓库的用户名
spring.cloud.config.server.git.password:访问git仓库的用户密码

spring.cloud.config.discovery.enabled 是否从配置中心读取文件。(config client中 为true时可以替代spring.cloud.config.server.git.uri)
spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名。

本地环境 config bootstrap.yml 配置

本地confin server配置

server:
  port: 9111
spring:
  application:
    name: config-server
  profiles:
  	## 配置文件在本地
    active: native
  # 配置中心
  cloud:
    config:
      server:
      	#本地配置文件的目录
        native:
          search-locations: D:/workspace/dev/mango/config/
      # 此处的label不起作用 (native本地config sever label 不起作用)
      label: master

git仓库 config bootstrap.yml 配置

server:
  port: 9111
spring:
  application:
    name: config-server
  # 配置中心
  cloud:
    config:
      server:
        git:
          uri: xxxx
          search-paths: mango-*
          username: xxxx
          password: 123456
	      repos:
	          simple: https://github.com/simple/config-repo
	          special:
	            pattern: special*/dev*,*special*/dev*
	            uri: https://github.com/special/config-repo
	          local:
	            pattern: local*
	            uri: file:/home/configsvc/config-repo   
      # git    
      label: master
  • simple 仓库自动匹配到 simple/*
  • special 仓库的pattern,第一个是应用名以special开头,环境名以dev开头;第二个是应用名包含special,环境名以dev开头;多个匹配到同一uri的pattern用逗号分割
  • local 仓库的的pattern也会自动补全为local*/*
  • test仓库中的 pattern 是以通配符开始的,需要使用单引号
配置多个仓库时,Config Server 在启动时会直接克隆第一个仓库的配置库,其他配置库只有请求时才会clone到本地

客户端配置

configClient配置的uri和discovery方式比较

使用discovery的方式从配置中心获取配置(推荐)

server:
  port: 8001
spring:
  application:
    name: mongo-eureka
  profiles:
    active: dev
  # 配置中心
  cloud:
    config:
      # 应用名    对应 mango-eureka-dev.yml 中的 mango-eureka
      name: ${spring.application.name}
      # 环境名    对应 mango-eureka-dev.yml 中的 dev
      profile: ${spring.profiles.active}
      # 从配置中心读取文件 (必须注册到注册中心才能从获取Config配置中心获取配置)
      discovery:
        enabled: true
        # 配置中心的id 对应config sever 的 spring.application.name (使用Eureka注册中心来发现Config配置中心服务)
        service-id: config-server
      # 对应config sever 的分支   (config sever中的label指的是 远端仓库的分值;此处分支为config sever在项目的的开发分支)
      label: master
      
eureka:
 client:
   serviceUrl:
     defaultZone :  http://eureka-node1:7000/eureka/
   fetch-registry: true
   registry-fetch-interval-seconds: 8
 instance:
   prefer-ip-address: true
   lease-renewal-interval-in-seconds: 4
   lease-expiration-duration-in-seconds: 15        

使用uri的方式从配置中心获取配置

server:
  port: 8001
spring:
  application:
    name: mongo-eureka
  profiles:
    active: dev
  # 配置中心
  cloud:
    config:
      # 应用名    对应 mango-eureka-dev.yml 中的 mango-eureka
      name: ${spring.application.name}
      # 环境名    对应 mango-eureka-dev.yml 中的 dev
      profile: ${spring.profiles.active}
      # config 配置中心的地址
      uri: http://config-node1:9111
      # 对应config sever 的分支   
      label: dev      

在这里插入图片描述

加密解密 (非对称加密)

java-tool生成 config-server.keystore

windos 生成 config-server.keystore

# CN 姓氏  
# OU 组织单位
# O 组织名称
# L  城市
# ST  省份
# china 国家
keytool -genkeypair -alias mytestkey -keyalg RSA -dname "CN=chrislin, OU=tr, O=organization, L=city, ST=province, C=china" -keypass changeme -keystore server.jks -storepass letmein 

java keytool 参数选项:

 -alias <alias>                  要处理的条目的别名
 -keyalg <keyalg>                密钥算法名称
 -keysize <keysize>              密钥位大小
 -sigalg <sigalg>                签名算法名称
 -destalias <destalias>          目标别名
 -dname <dname>                  唯一判别名
 -startdate <startdate>          证书有效期开始日期/时间
 -ext <value>                    X.509 扩展
 -validity <valDays>             有效天数
 -keypass <arg>                  密钥口令
 -keystore <keystore>            密钥库名称
 -storepass <arg>                密钥库口令
 -storetype <storetype>          密钥库类型
 -providername <providername>    提供方名称
 -providerclass <providerclass>  提供方类名
 -providerarg <arg>              提供方参数
 -providerpath <pathlist>        提供方类路径
 -v                              详细输出
 -protected                      通过受保护的机制的口令

config sever 项目bootstrap.yml中添加 encrypt的配置

# 加密解密配置
encrypt:
  key-store:
    location: classpath:/server.jks  #jks文件的路径
    password: letmein                 #storepass
    alias: mytestkey                 #alias
    secret: changeme                 #keypass

完成了JCE的安装后,可以尝试启动配置中心,Spring Cloud 暴露出了几个端点
/encrypt/status:查看加密功能状态的端点
/key:查看密钥的端点
/encrypt:对请求的body内容进行加密的端点
/decrypt:对请求的body内容进行解密的端点
在这里插入图片描述

问题解决

1 如果出现java.security.InvalidKeyException: Illegal key size错误
替换jdk中的C:\Program Files\Java\jdk1.8.0_65\jre\lib\security 目录下的local_policy.jar 和 US_export_policy.jar
(java8地址)下载地址:https://www.oracle.com/java/technologies/javase-jce8-downloads.html
2 如果http://localhost:8002/encrypt 一直失败 (去除 config sever的安全配置 和 config sever中的eureka client配置(如果eureka sever配置了安全认证)

参考:

SpringCloud Config Server和Client的配置使用
Spring Cloud构建微服务架构:分布式配置中心(加密解密)
java中Keytool的使用
加解密生成加密密码错误 :java.security.InvalidKeyException: Illegal key size
encrypt 加密后如何使用

热门文章

暂无图片
编程学习 ·

javascript 实现所有浏览器异步加载的工具

javascript 实现所有浏览器异步加载的工具 //异步加载 实现 function loadScript(url, callback){ //新建一个script 元素 var script = document.createElement(‘script’); //再往script中添加类型 script.type=“text/javascript”; if(script.readyState){ //每当 rea…
暂无图片
编程学习 ·

3.1.2 Jsoup请求URL

org.jsoup.Jsoup类可以用来处理连接操作。在org.jsoup.Jsoup类中提供了connect(String url)方法来创建一个新连接,该方法的实现依赖于Java网络通信包java.net。在创建连接之后,可通过具体请求方法(GET或POST等)获取URL对应的HTML文件。 如需要采集某页面中的文本内容。首先,…
暂无图片
编程学习 ·

c++数制2~16数进制的转换

通项公式: while(n!=0){ a[i]=n%d; n=(n/d); i++; } 其中n为要转换的十进制的数。d为要转换的数制,如二进制为2. #include<iostream> using namespace std;int main() {int i,n,d,a[100];//n 为要转换的十进制数,d为要转为的数制 while(cin>>n>>d){i=0;wh…
暂无图片
编程学习 ·

Web会话管理

1.会话管理基本原理 1.隐藏域 将表单中的内容在显示页面时隐藏,不显示数据,在JSP 中将input标签type设置为hidden 生成一个隐藏表单域。将会话的唯一标识记录到隐藏域中的value值中,并设定name值。提交给服务器之后,服务器会根据根据会话标识找到会话对象。 缺点:实现比较…
暂无图片
编程学习 ·

ngrok内网穿透的使用

**有时候项目没有部署到服务器,需要给用户展示效果,就可以用ngrok做内网穿透来解决这个问题** **ngrok的用法:**进入ngrok官网 http://www.ngrok.cc/,注册登录进入 在隧道管理中,进行开通隧道(即购买免费的服务器)3.开通隧道,配置端口ip,进行添加开通。4.开通后,在隧道管…
暂无图片
编程学习 ·

制药业中的自然语言处理(NLP)

文章目录NLP 用于发现新药物化合物NLP 用于将参与者纳入临床试验药品营销的 NLP参考资料 转载来源:https://zhuanlan.zhihu.com/p/140044281自然语言处理(NLP)在制药业的使用似乎少于机器视觉和预测分析等 AI 方法,但尽管如此,NLP 在制药业仍有一些应用。该行业主要处理结…
暂无图片
编程学习 ·

大学的生活给你的现在带来了什么?

《你的大学四年为现在的你提供什么优势了》初入大学的时候,我们每个人心里都存着渴望、好奇,有多少人在报完志愿的那一刻,心中的大学还是那些偶像剧中的样子。收到通知书的我们,都在彼此炫耀,终于走进了大学,可以自己做主的生活,没有家人约束的日子。走进大学的校门,多…
暂无图片
编程学习 ·

Mybatis多数据源配置

pom.xml <!-- Spring Boot Mybatis 依赖 --> <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.2.0</version> </dependency><!-- MySQL 连…
暂无图片
编程学习 ·

Vue——09——v-for和key指令

遍历普通数组 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><scri…
暂无图片
编程学习 ·

Java new关键词的作用

文章目录new关键词的作用成员变量"字符串" new关键词的作用Person person = new Person();右边的new Person: 是以Person类为模板在堆中实例化一个对象。 右边的(): 意味着在对象实例化后,调用Person的构造器,对其初始化。 左边的Person person: 创建一个Person类…
暂无图片
编程学习 ·

第一次用IDEA创建maven工程时间

第一次在idea中创建maven工程花费20+min 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与…
暂无图片
编程学习 ·

mongoDB采坑

mongoDB采坑 安装问题没有权限参考 https://blog.csdn.net/qq_20084101/article/details/82261195
暂无图片
编程学习 ·

nmon监控工具使用

1、下载nmon监控工具和分析工具,然后把nmon监控工具上传到需要监控的服务器上,建议在/usr/local文件夹下新建一个soft文件夹来存放监控工具,监控工具下载地址https://sourceforge.net/projects/nmon/files/nmon16m_helpsystems.tar.gz/download,然后在soft文件夹下再新建一…
暂无图片
编程学习 ·

OA、ERP、BPM 各自的功能和特点是什么?怎么配合使用?

​OA是Office Automation的简称,译为办公自动化,常用于企业内部事务管理。OA具有的几个功能:信息存储、数据管理、数据共享。因此,它的使用场景常分布在日常办公中,比如:公文管理、沟通工具、文档管理、项目管理、任务管理、会议管理、通讯录、工作便签、问卷调查、常用工…
暂无图片
编程学习 ·

【DevOps】云原生(Cloud Native)

云原生 Pivotal 是云原生应用的提出者,并推出了Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 云原生的概念历经了许多个版本的迭代,到了2015年Google主导成立了云原生计算基金会(CNCF),对云原生的定义为: 云…
暂无图片
编程学习 ·

JavaScript之组合式继承

继承的概念 面向对象的三大特征:封装,继承,多态 封装: 将复杂的操作包裹起来,进行隐藏,简单化,安全化 继承: 拿来主义,自己没有,把别人的拿过来,让其成为自己的 JavaScript中有两种继承模型: 1.原型式继承 2.组合式继承 组合式继承就是将其他对象中的成员添加到自己…
暂无图片
编程学习 ·

Git之HTTPS和SSH两种方式托管项目到GitHub

Git之HTTPS和SSH两种方式托管项目到GitHubGit和代码托管中心Git结合GitHub使用https方式ssh方式同步到远程仓库从远程仓库克隆从远程仓库取代码其他 Git和代码托管中心局域网环境 GitLab服务器外网环境下 GitHub、码云Git结合GitHub使用介绍 Github支持两种同步方式"https…
暂无图片
编程学习 ·

HTTP协议

HTTP入门1.为什么要学HTTP?我们绝大多数的web应用都是基于http来进行开发的,我们对web的操作都是通过http协议进行传输数据的;简单来说,http协议就是客户端和服务器交互的 一种通讯格式。Http的诞生主要是为了能够文档之间相互关联,形成超文本可以互相传阅,可以说http就是…
暂无图片
编程学习 ·

OpenCV学习笔记(一):opencv安装,边缘提取

OpenCV学习笔记(C++,win10+OpenCV4.1.2+VS2017) 记录了本人在图像处理相关学习过程中对opencv的使用心得,主要是供自己复习,但如果碰巧为你解决了问题,那就更好了。 由于本博客写作目的是用于复习,故顺序依照本人学习过程来进行编写。 如有错误,欢迎指正。 一、OpenCV的…