两个子域名位于同一公共 IP 上,但属于两个不同的 Web 服务器

两个子域名位于同一公共 IP 上,但属于两个不同的 Web 服务器

我们有两个 Web 服务器,一个托管我们的帮助台 Web 门户 (helpdesk.domain.com),另一个托管我们公司的 Intranet (intranet.domain.com)。我正在尝试配置托管在帮助台机器 (helpdesk.domain.com) 上的 Apache Web 服务器,以将非 helpdesk.domain.com 发送到 intranet.domain.com。我感觉我错过了一些简单的东西,因为当尝试在本地网络之外访问 helpdesk.DOMAIN.com 时会导致重定向到 intranet.DOMAIN.com。

这是我当前的 helpdesk.DOMAIN.com apache 网络服务器的配置文件。

<VirtualHost *:80>
    ServerName intranet.DOMAIN.com
    ProxyPass http://intranet.DOMAIN.com http://192.0.1.22/ nocanon
    ProxyPassReverse http://intranet.DOMAIN.com http://192.0.1.22/
    ProxyPreserveHost on
    ErrorLog ${APACHE_LOG_DIR}/intranet_error.log
    CustomLog ${APACHE_LOG_DIR}/intranet_error.log common
</VirtualHost>

<VirtualHost *:80>
    ServerName helpdesk.DOMAIN.com
    ServerAlias helpdesk.DOMAIN helpdesk.DOMAIN www.helpdesk.DOMAIN.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/helpdesk.DOMAIN.com

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

答案1

首先,您需要确保启用了两个 Apache 模块,您可以使用以下命令执行此操作。

a2enmod proxy
a2enmod proxy_http

下面是一个示例配置,用于执行您要求的操作

<VirtualHost *:80>
    ServerName helpdesk.DOMAIN.com
    ServerAlias helpdesk.DOMAIN helpdesk.DOMAIN www.helpdesk.DOMAIN.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/helpdesk.DOMAIN.com

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName intranet.DOMAIN.com
    # If someone tries to access any other domain, send them to the intranet site.
    ServerAlias *
    ProxyPass / http://192.0.1.22/
    ProxyPassReverse / http://192.0.1.22/
    ProxyPreserveHost On

    ErrorLog ${APACHE_LOG_DIR}/intranet_error.log
    CustomLog ${APACHE_LOG_DIR}/intranet_error.log common
</VirtualHost>
  • helpdesk.DOMAIN.com 的 VirtualHost 位于内联网之上。这将确保在访问 helpdesk.DOMAIN.com 域时,Apache 首先匹配此配置。
  • 内部网的 VirtualHost 配置了通配符 ServerAlias (ServerAlias *)。这意味着它将匹配另一个 VirtualHost 中未明确提及的任何域(在本例中,是除 helpdesk.DOMAIN.com 之外的任何域)。

不要忘记重新启动 Apache 以使此配置生效。

相关内容