【问题标题】:Apache Tomcat Server sub-domainsApache Tomcat 服务器子域
【发布时间】:2021-08-12 11:42:44
【问题描述】:

我在远程服务器上运行 apache tomcat,我有一个带有子域的域。我想为每个子域分配一个单独的项目。我无法在除 localhost 之外的其他域上运行 apache。该域绑定到远程服务器 IP 地址,因此所有子域都指的是 webapps 文件夹中的所有项目,而不是一个特定的。

  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>
  
  <Host name="https://web-dev.example.com/"  appBase="web-dev.example.com"
        unpackWARs="true" autoDeploy="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 

  </Host>
  
  
</Engine>

【问题讨论】:

    标签: java tomcat


    【解决方案1】:

    您主机的name 属性应包含虚拟主机的DNS 名称:

    通常是此虚拟主机的网络名称,在您的域名服务服务器中注册。无论用于指定主机名的大小写如何,Tomcat 都会在内部将其转换为小写。

    (参见Tomcat documentation)。

    因此你应该使用:

      <Host name="web-dev.example.com"
            appBase="web-dev.example.com">
      ...
      </Host>
    

    (我省略了具有默认值的属性)。

    【讨论】:

    • 感谢 Piotr 的回复。我之前也尝试过,但它不起作用,讽刺的是主机名只允许我使用 localhost。如果我删除它,服务器甚至都没有启动。
    • 你能澄清一下“它不起作用”吗?很有可能,您还使用反向代理(在端口 80/443 上)将请求转发到 Tomcat(在端口 8080 上),而 反向代理 配置错误。如果是这种情况,您可以将此信息添加到您的问题中吗?
    猜你喜欢
    • 2016-07-12
    • 2017-04-19
    • 1970-01-01
    • 2010-11-15
    • 2016-12-30
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多