【问题标题】:Tomcat Problem for external access?外部访问的Tomcat问题?
【发布时间】:2009-10-31 05:51:34
【问题描述】:

我不知道如何像 www.mydomain.com 这样访问我部署的战争文件

相反,我必须访问它,即http://mydomain.com:8080/WarFileName

我想解决这个问题,并且还能够在同一个 Tomcat 服务器上部署/托管多个域,即 www.mydomain1.com 和 www.mydomain2.com 在同一个 tomcat 服务器上没有端口 8080 变量网址

Server.xml 是拼图中缺失的部分吗?

信息:linux box、tomcat6、staticIP

【问题讨论】:

    标签: tomcat tomcat6


    【解决方案1】:

    您需要设置virtual hosting on Tomcat。这是通过在server.xml 中的<Engine> 元素下为每个域添加一个单独的<Host> 条目来完成的。我在上面提供的链接中提供了更多详细信息。

    【讨论】:

    • 去过那里,但我不明白这将如何解决 8080 问题!?
    • @GrailsNewbie:打开 server.xml 并搜索“8080”并将其替换为“80”(我认为在 2 个地方)。然后以root身份重新启动tomcat(因为非root用户无法绑定到端口80)并且您不需要url中的8080
    • @GrailsNewbie:如果我上面关于将 tomcat 端口从 8080 切换到 80 的说明不起作用,可能是因为另一个 Web 服务器已经在端口 80(通常是 apache)上运行。如果是这种情况,只需在启动 tomcat 之前停止 apache。
    【解决方案2】:

    首先,您需要确保您拥有正确的 DNS 设置,即 www.mydomain.com 和 mydomain.com 都指向同一个 IP 地址(这由您的 DNS 提供商处理) .更改这超出了堆栈溢出的范围,如果您需要更多详细信息,可以在 Server Fault 上询问。

    虽然您可以修改 tomcat 实例以将端口从 8080 更改为它提供的 80,并将您的应用程序位置从 /WarFileName 移动到 /,但这通常不是 Tomcat 的部署方式。通常 Tomcat 保留在其默认端口上,并在其前面放置一个 apache 代理,以将来自 http://www.mydomain.com/ 等公共域的请求重定向到位于 http://localhost:8080/WarFileName 的内部 Tomcat 实例。

    【讨论】:

    • 代理的东西对我来说听起来很不错......怎么做?
    • 老实说,它并不是真正适合 SO 帖子的主题,也不是 Stack Overflow 的真正主题。尝试询问更适合询问服务器配置类型问题的服务器故障。
    • @Jherico:OP 为什么要打扰 apache 代理?这里有什么好处?我认为没有理由增加 OP 设置的复杂性。
    • @Asaph:是的,你是对的! “将 Tomcat 配置为使其所有请求都必须首先通过 Apache httpd 可能实际上会减慢 Tomcat 的响应时间,而 Web 服务器管理员通常需要改进动态内容的性能。”参考:Tomcat,权威指南,第二版,O'Reilly 2008 所以要在没有 apache 代理的情况下完成它,只需将 server.xml 中的 8080 更改为 80?我试过了,它对我不起作用!?
    • @GrailsNewbie:请发布您的server.xml,以便我们查看。
    【解决方案3】:

    您需要进行以下更改,

    1. 将您的战争名称更改为 ROOT.war,这样您就可以在没有“/WarFileName”的情况下访问它。
    2. 在 server.xml 中将 HTTP 连接器中的端口号从 8080 更改为 80。在大多数操作系统上,您必须以特权帐户(Unix 中的 root)运行服务器才能使用端口

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      相关资源
      最近更新 更多