有没有办法确定 Tomcat on Elastic Beanstalk 中环境的 URL 是啥?

Posted

技术标签:

【中文标题】有没有办法确定 Tomcat on Elastic Beanstalk 中环境的 URL 是啥?【英文标题】:Is there a way to determine what the URL is for the environment in Tomcat on Elastic Beanstalk?有没有办法确定 Tomcat on Elastic Beanstalk 中环境的 URL 是什么? 【发布时间】:2012-08-18 09:09:15 【问题描述】:

每个 Elastic Beanstalk 环境都有一个关联的 URL(在具有环境的 Elastic Load Balancer 上)。在 EB 的 Java/Tomcat 风格中,有没有办法查询该 URL,以便在应用程序中动态使用它?

我当前的解决方法是将 URL 作为参数传递给容器,但在切换环境 URL 以进行实时部署时,这并不适用。

【问题讨论】:

您在应用程序生命周期的哪个阶段需要上述 URL?如果它是为了响应客户端请求,您可以操纵从 HttpServletRequest#getRequestURL() 或类似 API 获得的内容? URL 只是 .elasticbeanstalk.com 不是吗?你能从应用程序名称中构造它吗? @Charlie 我想这可以用于响应,但在此之前我实际上也需要它来进行配置。似乎 EB 应该有一种方法可以将这种配置数据传递到 JVM 或 Tomcat 容器中。 @Christopher 遗憾的是,如果您使用自定义 URL(HTTPS 必需)运行,这将不起作用 @bmajz 如果是 HTTPS,您正在将证书上传到 ELB,是吗?你能ping通ELB上配置的证书吗?这应该在配置时可用。 【参考方案1】:

根据 cmets 的要求:在应用程序生命周期的哪个阶段,您需要上述 URL?如果它是为了响应客户端请求,您可以操纵从 HttpServletRequest#getRequestURL() 或类似 API 获得的内容?

(我很好奇你用什么来满足你的需求)

【讨论】:

在批处理作业(即不响应请求)中生成 RSS 提要等操作时,您可能需要此功能。【参考方案2】:

是的,确实如此。

后端负载均衡器在被调用时会转发额外的 URL。

检查请求标头“Host”和“X-Forwarded-Host”

【讨论】:

以上是关于有没有办法确定 Tomcat on Elastic Beanstalk 中环境的 URL 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法配置 Elastic Beanstalk 以连接到现有的 Oracle 数据库(没有 BYOL)?

How to force https on amazon elastic beanstalk

Elastic Beanstalk 上的 Tomcat - Tomcat 线程中的多线程

Elastic stack技术栈学习—— SpringBoot集成ES(更新中)

Elastic Beanstalk 应用程序 (Tomcat 7) 中的 MySQL 连接错误

AWS Elastic Beanstalk 上的 Tomcat:公开多个端口