【问题标题】:WildFly -> Undertow -> mapping subdomain to war file not workingWildFly -> Undertow -> 将子域映射到 war 文件不起作用
【发布时间】:2014-08-18 13:21:13
【问题描述】:

WildFly 8.1.0 决赛 视窗服务器 2012 R2

我有两个子域指向这个服务器,我希望每个子域的请求触发不同的war文件:-

webapp.domain1.com -> WildFly Server -> myapp1.war
test.domain2.net -> WildFly Server -> myapp2.war

我的standalone.xml 文件目前根据在 JBoss 开发者网站上收到的建议配置如下:-

<subsystem xmlns="urn:jboss:domain:undertow:1.1">
  <buffer-cache name="default"/>

  <server name="default-server">
    <http-listener name="default" socket-binding="http"/>

    <host name="default-host" default-web-module="myapp1.war" alias="webapp.domain1.com"/>
    <host name="other-host" default-web-module="myapp2.war" alias="test.domain2.net"/>
  </server>

  <servlet-container name="default">
    <jsp-config/>
  </servlet-container>

  <filters>
    <response-header name="server-header" header-value="WildFly/8" header-name="Server"/>
    <response-header name="x-powered-by-header" header-value="Undertow/1" header-name="X-Powered-By"/>
  </filters>
</subsystem>

将浏览器指向 webapp.domain1.com 或 test.domain2.net 会导致请求按预期发送到 WildFly 服务器,但在这两种情况下都会触发相同的 war 文件 (myapp1.war)。

如下切换 元素的“名称”值会导致 myapp2.war 被调用,无论使用哪个 URL:-

    <host name="other-host" default-web-module="myapp1.war" alias="webapp.domain1.com"/>
    <host name="default-host" default-web-module="myapp2.war" alias="test.domain2.net"/>

看起来 Undertow 只处理“默认主机”条目的详细信息。

这里有人可以帮忙吗?

如果做不到这一点,有谁知道 WildFly 是否(以及如何)可以与 Apache Web Server 一起使用?

【问题讨论】:

    标签: apache jboss subdomain wildfly undertow


    【解决方案1】:

    这是当前 undertow 子系统实现中的一个错误。 它只正确处理默认主机的 default-web-module,甚至不考虑非默认主机。

    我创建了https://issues.jboss.org/browse/WFLY-3639 来跟踪和修复它。

    作为一种解决方法,直到解决此问题为止添加

    jboss-web.xml 到您的 myapp2.war 的 WEB-INF

    内容:

    <jboss-web>
        <virtual-host>other-host</virtual-host>
        <context-root>/</context-root>
    </jboss-web>
    

    这将告诉服务器它应该绑定到哪个主机和上下文根。

    【讨论】:

    • 感谢您的回答 - 很抱歉延迟回复。这解决了问题。
    【解决方案2】:

    我在 Ubuntu 14.04 上使用 WildFly 8.1.0.Final 和 Firefox 30 测试了与您类似的设置,对我来说,在我的一次战争中添加 WEB-INF/jboss-web.xml 后它可以工作:

    <jboss-web>
        <virtual-host>other-host</virtual-host>
    </jboss-web>
    

    我在 /etc/hosts 中为同一 IP 定义了两个不同的主机别名,我的浏览器按预期重定向到 http://alias1:8080http://alias2:8080 的不同 Web 应用程序。

    【讨论】:

      【解决方案3】:

      default-host 是在传入请求没有 Host: 标头时将使用的虚拟主机。因此,要将请求发送到您的其他服务器,客户端发送的请求应在请求标头中包含“主机:其他主机”。

      来自客户端的示例 HTTP 请求如下所示,

      GET /Some/Resource HTTP/1.1
      Accept: ....
      Host: other-host
      ....
      ....
      

      看看这是否有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 2012-07-16
        • 2018-08-30
        • 2015-02-24
        • 1970-01-01
        相关资源
        最近更新 更多