![Apache 虚拟主机混合 IP 和域名](https://linux22.com/image/1565441/Apache%20%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%B7%B7%E5%90%88%20IP%20%E5%92%8C%E5%9F%9F%E5%90%8D.png)
我遇到过这种情况: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>