我有一台 Tomcat 5.0.27-2 服务器(我知道……很旧)和 Apache 2.0.46-77 服务器,目前运行良好,可以正常提供应用程序。我们遇到的问题是,如果我导航到http://www.mysite.com/index.jsp,我看到了预期的 JSP。但是,如果我导航到(为了发布目的而拆分)http:// 1.2.3.4 /index.jsp(该站点的外部 IP 地址,已 NAT 为 192.168.0.20),我会看到默认的“Tomcat 欢迎”jsp。另外,如果我转到 http:// 192.168.0.20 /index.jsp,我会看到正确的站点。只有通过 NAT 时,我才能看到 tomcat 页面。我确信这是 server.xml 或 web.xml 中的某些内容,但我不知道是什么。
在您说“升级您的 tomcat”之前,我知道我们需要这样做,但这是一个紧急问题,我们没有时间进行迁移和彻底测试。最终,我们将升级到 Tomcat6,但不是今天。
我们在服务器上托管了多个站点,但是对于这个站点,server.xml 具有以下内容:
<Host name="mysite.net" appBase="/mysite_root/ROOT" >
<Alias>1.2.3.4</Alias>
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>
<Host name="www.mysite.net" appBase="/mysite_root/ROOT" >
<Alias>1.2.3.4</Alias>
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>
<Host name="mysite.com" appBase="/mysite_root/ROOT" >
<Alias>1.2.3.4</Alias>
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>
<Host name="www.mysite.com" appBase="/mysite_root/ROOT" >
<Alias>1.2.3.4</Alias>
<Context path="" docBase="" debug="0" reloadable="true" crossContext="true" />
</Host>
答案1
当 Tomcat 通过主机的 IP 地址本身而不是 127.0.0.1 进行应答时,就会发生这种情况。
如果你的目标是让 Apache 成为你的前门并将所有请求代理到 Tomcat,那么你应该让 Tomcat 绑定到本地主机,而不是主机的 IP 地址。然后你可以使用它mod_proxy
来转发请求,而不会让任何人直接访问 Tomcat。这是Apache 文档中有详细描述而且很常见,所以改变起来应该不难。
答案2
它可能配置为基于名称的托管... server.xml 中是否有带有 appBase 属性的 Host 标记?如果有,请检查其设置为何值以及默认值是多少。
答案3
您可以在 apache 中设置重写规则,重定向所有不以 开头的请求http://www.mysite.com到http://www.mysite.com。