gpt4 book ai didi

java - 确定反向代理后面的 Java 应用程序中面向用户的 url

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:41 24 4
gpt4 key购买 nike

我有这个复杂的 Java 应用程序,它托管在反向代理后面。

在调用 request.getServerName() 时,在 Java 应用程序级别确定面向用户的 URL 的最佳做法是什么? , request.getServerPort()和 friend ?

我们在 Apache mod_proxy 后面使用 Tomcat(但我们可能会切换到嵌入式 jetty )(但我们肯定会切换到 Amazon Elastic Load Balancer)。我列出了 4 种解决方案:

  1. 使用 apache mod_proxy 重写 303 重定向。 这是我们当前解决方案的一部分,但被排除在外,因为弹性负载均衡器不可用
  2. 让应用服务器读取请求的Host HTTP头
  3. 在应用程序服务器级别对应用程序位置进行硬编码 ( example config in Tomcat )
  4. 停止使用标准的 ServletRequest API。取而代之的是在配置文件中使用服务器的完整限定名称,并从我们的代码中读取该配置。

我们目前的解决方案:

  • 重定向由 mod_proxy 重写(第一种方法)
  • 应用程序的其他一些部分使用我们在配置文件中设置的路径(最后一种方法)

我绝对需要停止使用方法 1,我想选择其他三个命题之一。

编辑:这可以概括为:

  • 我可以信任 request.getServerName() 吗?
  • 是吗,我可以信任 Host HTTP header 吗?

最佳答案

如果您将 tomcat 配置为从请求中保留 HOST,即使用指令,则您可以信任 Tomcat 上的 mod_proxy 传递的 HOST header :

ProxyPreserveHost 开启

关于java - 确定反向代理后面的 Java 应用程序中面向用户的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com