Apache 虚拟主机混合 IP 和域名

Apache 虚拟主机混合 IP 和域名

我遇到过这种情况:Apache 服务器的主 www 文件夹上运行着一个 VPS,没有虚拟主机。现在我需要托管一些虚拟主机,但我需要从主 IP 地址访问这个特定的 Web 应用程序。其他虚拟主机将具有不同的域名。为了进一步解释我的问题,这里有一个虚拟示例

我有一台 IP 为 X 的服务器,正在运行应用程序 A,但不使用 vhost。一些应用程序使用 IP X 访问应用程序 A。然后需要添加具有域名app-b.com和的 WebApp B 和 C。app-c.com现在我需要添加这两个应用程序,而不会干扰通过 IP X 访问应用程序 A 的应用程序。最终的解决方案是将应用程序 A 移动到 vhost 并更新应用程序以通过访问它app-a.com,但这将花费很长时间,所以我需要短期解决方案。

任何指点或帮助都值得赞赏

答案1

如果您在使用官方文档时遇到困难,让我们从头开始:

首先,打开应用程序 A 的现有站点配置,通常位于/etc/apache2/sites-enabled。由于您只想使用 IP 地址访问应用程序 A,因此请打开站点配置并将其编辑为如下所示:

<VirtualHost 192.168.1.1>
    DocumentRoot "/www/app-a"
    ServerName 192.168.1.1
    ServerAlias 192.*
    ServerAlias *:*

    # Other directives here
</VirtualHost>

接下来,在您的 sites-available 文件夹中创建一个新的配置,通常/etc/apache2/sites-available如下所示:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/app-b.com.conf

接下来打开它:

sudo vim /etc/apache2/sites-available/app-b.com.conf

里面的东西应该看起来很像官方文档. 编辑如下:

<VirtualHost *:80>
    DocumentRoot "/www/app-b"
    ServerName www.app-b.com

    # Other directives here
</VirtualHost>

最后,使用以下命令启用你的网站:

sudo a2ensite app-b.conf
sudo service apache2 restart

对应用程序 C 重复上述操作。

将来,要将应用程序 A 移至其自己的虚拟主机,请更改

<VirtualHost 192.168.1.1>
    DocumentRoot "/www/app-a"
    ServerName 192.168.1.1
    ServerAlias 192.*
    ServerAlias *:*

    # Other directives here
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/www/app-a"
    ServerName www.app-a.com

    # Other directives here
</VirtualHost>

相关内容