Apache下的子域代理到Tomcat

Posted

技术标签:

【中文标题】Apache下的子域代理到Tomcat【英文标题】:Subdomain under Apache to proxy into Tomcat 【发布时间】:2011-02-06 05:06:43 【问题描述】:

在使用 AJP 代理到 Tomcat 时,我无法为我的 Windows 计算机创建子域。这是我的 httpd.conf 文件中的内容:

<VirtualHost *:80>  
    ServerName subdomain.localhost  
    ProxyRequests Off  
    <Proxy *>  
        Order deny,allow  
        Allow from all  
    </Proxy>  
    ProxyPass / ajp://localhost:8009/folder/  
    ProxyPassReverse / ajp://localhost:8009/folder/  
    <Location />  
        Order allow,deny  
        Allow from all  
    </Location>  
</VirtualHost>

子域已添加到`c:\windows\system32\drivers\etc\hosts

127.0.0.1 本地主机 127.0.0.1 subdomain.localhost

当我去http://localhost 时,我直接去代理。当我去http://subdomain.localhost 时,我也会去代理。我该怎么做才能让子域只去代理,而常规去Apache?

【问题讨论】:

【参考方案1】:

您需要使用 localhost 作为 ServerName 声明第二个 VirtualHost。

【讨论】:

每天学习新东西 :) 你能发一个例子来说明第二个 VirtualHost 应该是什么样子吗? 与问题中的相同,但使用 ServerName localhost 而不是 ServerName subdomain.localhost【参考方案2】:

这可能应该移至 superuser.com,但要尝试一件事:

&lt;VirtualHost *:80> 通知它接受端口 80 上的所有传入连接以使用这些设置。我会尝试将其更改为:

<VirtualHost subdomain.localhost:80>

并查看是否仅在使用子域时应用这些设置。

您在子域中放置的 ServerName 标记并没有告诉它要听谁。官方文档指出:

ServerName 指令设置 服务器使用的主机名和端口 来识别自己。这用于 创建重定向 URL。为了 例如,如果机器的名称 托管 Web 服务器是 simple.example.com,但机器 还有 DNS 别名 www.example.com 你希望网络服务器是这样的 确定,以下指令 应该使用:

您可以阅读有关这些配置的更多信息here。

【讨论】:

我之前尝试过 subdomin.localhost ,它仍然从 localhost 直接进入 tomcat。感谢您的回复和指向 superuser.com 的链接,从今天开始,我将尝试在各个站点之间区分我的问题。

以上是关于Apache下的子域代理到Tomcat的主要内容,如果未能解决你的问题,请参考以下文章

特定子域的 Apache 反向代理

子域的 Apache 2.2 和 tomcat 重定向

在 apache 2.2.3 上设置通配符子域(带有反向代理)

如何使用 Apache 和 Tomcat 为 Geoserver WMS 设置子域

丙烯酸DNS代理无法创建动态通配符子域

Apache 虚拟主机不适用于子域