【问题标题】:How can I know if tomcat is running behind Apache?我怎么知道tomcat是否在Apache后面运行?
【发布时间】:2009-09-24 10:06:04
【问题描述】:

在生产中,我们在 apache 后面运行 tomcat,在开发中使用裸 tomcat。 我如何知道 Servlet 类内部是否在 apache 后面运行?

【问题讨论】:

  • 如果您添加为什么您想这样做,我们也许可以帮助解决您的问题,而不是回答问题..
  • 你可以让 apache 添加一个自定义的 http 头。我相信这很容易。现在假设您可以控制生产环境 - 正如下面的一位评论者指出的那样,如果您不这样做,标题可能会丢失..

标签: java apache tomcat servlets


【解决方案1】:

这取决于您的 Apache 如何与 Tomcat 通信。

如果它是通过 HTTP (mod_proxy) 连接的,你可以检查 request.getRemoteAddr()。它将是 Apache 的 IP,可能是您的内部 IP。您还可以检查“Via”标题以查看 Apache 是否存在。

如果它是通过 AJP (mod_jk/mod_proxy_ajp) 连接的,您可以检查 request.getLocalPort() 以查看它是否是您的 JK 连接器的端口。

【讨论】:

    【解决方案2】:

    如果这是为了区分开发环境和生产环境,那么最好完全控制它而不是临时猜测(最终会失败)。

    这可能是“JNDI 中是否设置了功能 X?”或“是否在 c:/ourproject.properties 中设置了属性 foo.bar”。您不应依赖诸如“是从文件中加载类 X 还是在 jar 中找到的类”(因为如果您更改应用程序服务器会中断)或“是否存在 http 标头行 X”之类的工件,因为这超出了您的控制范围如果其他人使用 Apache 作为前端加速器,可能会中断。

    所以,显式配置 - 可以很容易地完成 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多