ljj481322 2019-02-27 12:24 采纳率: 0%
浏览 684

tomcat,配置虚拟主机名(host name),名称中含有“."时,访问不了

在tomcat(7,8,9)中,基于主机名在同一个Service中配置多个虚拟主机,host 中的name,如果主机名中带“.”,就会报错,访问不了
如下配置,http://ccc:8080/index.html可以访问,但是http://cc.c:8080/index.html访问不了(ccc和cc.c已在hosts文件中配置了127.0.0.1),不知大家是否也遇到了相同的问题,原因是什么,大家是怎么解决的?

        <Host name="ccc"  appBase="test"
        unpackWARs="true" autoDeploy="true" />

  <Host name="cc.c"  appBase="test"
        unpackWARs="true" autoDeploy="true" />
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 02:25
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于Tomcat内部解析主机名的时候发生了错误。在你的例子中,你使用了appBase="test"来指定服务的目录,这是正确的。

    然而,当你尝试访问cc.c时,Tomcat会将这个主机名解析为cc.c:8080。这是因为.代表端口,在解析过程中被忽略了。

    为了修复这个问题,你需要确保你在主机名中正确地包含:,例如cc.c:8080。这样,Tomcat就可以正确地解析主机名并访问相应的虚拟主机。

    你可以通过修改你的主机配置来实现这一点:

    <Host name="cc.c"  appBase="test"
            unpackWARs="true" autoDeploy="true" >
        <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
                    redirectPort="8443" />
    </Host>
    

    这样,当访问cc.c:8080时,Tomcat就会正确地解析到cc.c对应的虚拟主机,并允许访问。

    评论

报告相同问题?