如何使用 vhosts 配置 Apache 和 Tomcat?

如何使用 vhosts 配置 Apache 和 Tomcat?

我有一台具有静态公共 IP 地址的服务器。我还有一个注册域名。

为了便于说明,我们假设它们

  • IP地址:12.34.56.78
  • 域名:example.com

我有一台机器,正在运行以下命令:

  1. 本地可访问的网站(通过 IIS7)localhost:80
  2. 本地可用的 JetBrains TeamCity 实例(通过 Tomcat)localhost:1234
  3. 本地可用的 VisualSVN 服务器实例(通过 Apache)位于localhost:5678/svn

我为 example.com 设置了 A 记录以及以下 CNAME 记录:

  • www.example.com
  • builds.example.com
  • sources.example.com

我想配置 Tomcat 和 Apache 以便:

  • 如果我将浏览器指向builds.example.com,我最终会进入 JetBrains TeamCity 实例,并且,
  • 如果我将浏览器指向sources.example.com,我最终会进入 VisualSVN 服务器实例。

我认为我可以将 Apache 配置为 vhostexample.com:5678/svn指向,sources.example.com并将以下几行添加到 Apache httpd.conf 文件中

Listen 5678

NameVirtualHost *:5678

<VistualHost *:5678>
  ServerName sources.example.com
  DocumentRoot /svn
</virtualHost>

这破坏了 VisualSVN 实例,所以我不得不将其还原为

Listen 5678

帮助!

答案1

您可以使用 apache 服务器作为代理,盲目地将请求转发到站点。要将 apache 服务器配置为代理,您需要在配置文件中添加类似以下内容:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<Proxy *>
    Order deny,allow
    Allow from 127.0.0.1
</Proxy>

NameVirtualHost 0.0.0.0:80
<VirtualHost 0.0.0.0:80>
    ServerName sources.example.com

    ProxyPass        / http://localhost:5678/svn/
    ProxyPassReverse / http://localhost:5678/svn/
</VirtualHost>

相关内容