【问题标题】:Expose spring actuator health endpoint on a different is a good thing or bad thing?在不同的地方暴露弹簧执行器的健康端点是好事还是坏事?
【发布时间】:2020-05-20 13:57:00
【问题描述】:
【问题讨论】:
标签:
spring-boot
spring-security
spring-boot-actuator
【解决方案1】:
为什么您可能希望在不同端口上公开执行器端点与应用程序前面的负载平衡器/防火墙有关。
假设您在端口 8080 上有 api。您的防火墙将使用端口 80 并将流量定向到端口 8080。
为什么不在我们的spring应用程序上直接暴露80端口呢?在linux中打开1024或以下端口需要root帐户,因为下面的端口是敏感端口。所以一个原因是您不想以 root 身份运行您的应用程序。
但是为什么然后执行器在不同的端口上,如果您有执行器可以说是 8081 那么您只能从防火墙后面的网络内部访问那些执行器(因为防火墙仅打开端口 80 用于外部连接)和没有其他人可以检查您的服务的健康状态、内存等。
【解决方案2】:
可能有不同的原因,有些是技术性的,有些不是:
您的安全部门制定了一项政策,即任何“管理”人员(执行器当然属于此类)都不能共享应用程序的默认端口。所以你只能忍受 :) 我在一家相当大的公司中看到过,所以这不是开玩笑。
1234563喜欢分开。
你有一些网络设备来路由你的请求,它可以很容易地禁止来自最终用户的某个端口的请求,但它不能对 URL 部分进行操作:
http://host:port/api/v1/business-stuff
http://host:port/health
--> Hard / impossible to configure routing
as opposed to:
http://host:port1/api/v1/business-stuff
http://host:port2/health
--> easy - open port1 for end users, don't open port2 to the out world
毕竟弹簧靴有很多选择,你应该决定最适合你的