具有不同主机但别名相同的两个服务无法正常运行

问题描述

我们正在使用SELECT 并且我们有2个spring-boot微服务正在作为对wildfly的战争而部署

  • service-a.war
  • service-b.war

我们在Wildfly-17.0.1下的两个服务中都有jboss-web.xml

service-a.war

src/main/webapp/WEB-INF

service-b.war

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

standalone.xml

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

别名为机器名称

server.log 中,当两个应用程序均已部署时,我们会看到以下消息

<subsystem xmlns="urn:jboss:domain:undertow:9.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
    <buffer-cache name="default" />
    <server name="default-server">
        <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" />
        <https-listener name="https" socket-binding="https" security-realm="UndertowRealm" enable-http2="true" />
        <host name="default-host" alias="alias" default-web-module="service-a.war" />
        <host name="b-host" alias="alias" default-web-module="service-b.war" />
    </server>
    ...
</subsystem>

但是,当我们尝试访问这两种服务时,只有一项服务似乎可以正常工作,而其他服务可以提供

 ...
 Registered web context: '/' for server 'default-server'
 ...
 Registered web context: '/' for server 'default-server'

我们尝试提供不同的上下文根,我们在日志中看到了

<html><head><title>Error</title></head><body>404 - Not Found</body></html>

但仍然只有一个作品,而其他作品却给出404

当我们为两个主机提供不同的别名时,它将起作用

为什么给不同的主机使用相同的别名不起作用?

解决方法

认为,您在jboss-web.xml中作为虚拟主机放置的字符串必须与独立配置文件中的别名(而不是名称)匹配

代替

<host name="b-host" alias="alias" default-web-module="service-b.war" />

尝试:

<host name="vhost2" alias="b-host" default-web-module="service-b.war" />