eureka

1、关于eureka.instance的【hostname】和【instance-id】

  不论是eureka服务端自身,还是要注册到eureka的应用,其实都不用设置这两个属性,尤其是在docker中部署应用时。只要设置docker容器的【hostname】即可,这样应用的hostname就是容器自身的hostname,同时在eureka仪表界面的instances列表的【Status】列中,显示的【instance-id】就是【hostname】、【spring.application.name】和【port】的组合。

  如果在application.yml中显示指定了【hostname】和【instance-id】,对于eureka集群来说,当节点以客户端的身份通过【eureka.client.service-url.defaultZone】中的接口地址访问其它节点时,所获取的服务端信息中的【hostname】属性必须与接口地址中【hostname】属性相匹配,否则该节点就会被视为【unavailable-replicas】。对于显示指定的【instance-id】,主要影响就在于【Status】列中内容的显示,不再是组合而直接就是【instance-id】。

2、关于开启用户认证后的【csrf】

  浅谈CSRF跨站点请求 - shawWey - 博客园,这篇文章介绍了csrf。当eureka项目中引入【SpringSecurity】后,SpringSecurity会自动开启其【CsrfFilter】,从而会将eureka集群中各节点直接互相发现和注册的接口调用拦截掉。SpringCloud系列五:为Eureka Server添加用户认证及元数据 - 禁忌夜色153 - 博客园,这篇文章介绍了如何开启eureka的用户认证及关闭【CsrfFilter】。

  这里有一个疑问,既然SpringSecurity默认开启了csrf过滤,为啥在eureka中就要关闭,关闭了不会啥危险吧?通过csrf介绍文章得知,csrf攻击是同一浏览器中黑客站点对其它已登录站点的进行跨域调用,这也就意味着被跨域调用的站点一定是广为人知的站点,否则黑客站点是无法知道已。但对于eureka集群中的节点来说,我们一把很少通过页面进行登录访问,并且即使访问过,节点地址也一般是私有的,黑客无法在其页面预设访问路径,所以可以关闭【csrf】的过滤。

原文地址:https://www.cnblogs.com/StarkBrothers/p/12040291.html