使本地 Apache2 安装具有可在网络内访问的多个虚拟主机

使本地 Apache2 安装具有可在网络内访问的多个虚拟主机

我的开发机器 (Debian 10) 上运行着本地 apache2 和 mariaDB 服务器。我使用虚拟主机,这样就可以同时访问多个网站。我按照以下步骤实现我的目标:

1)创建并编辑网站的conf文件。sudo nano /etc/apache2/sites-available/website.conf

2)在文件中填写以下内容:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName website.local
    ServerAlias www.website.local
    DocumentRoot /var/www/website/public_html/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

3)sudo a2ensite website.conf

4)sudo systemctl reload apache2

5)编辑hosts文件sudo nano /etc/hosts,添加以下行:127.0.0.1 website.local

此时它就可以正常工作了。当我访问时,http://website.local我将被重定向到新创建的本地网站。

当其他计算机访问我的电脑的 IP 地址时(假设是:10.0.0.100他们将访问我的/var/www/html/index.html文件。我不知道为什么会这样,因为我从来没有设置过它。但事实确实如此。

我的愿望:10.0.0.100在我的网络内,打开一个页面,我可以(手动)放置一个重定向到我拥有的本地网站的列表。例如:

<ul>
    <li><a href="http://website1.10.0.0.100/">Website1</a></li>
    <li><a href="http://website2.10.0.0.100/">Website2</a></li>
    <li><a href="http://website3.10.0.0.100/">Website3</a></li>
</ul>

我希望得到正确的指导,因为我目前不知道如何实现这一点。

答案1

website.local您可以通过将相应的名称(又名)注册到您的网络 DNS 来实现。

类似这样的名称website1.10.0.0.100您自己根本无法实现,因为它以字符串 ( website1) 开头,任何客户端都会将其视为 FQDN。因此,任何客户端都会尝试找出哪个 DNS 服务器对.100顶级域名具有权威性……您可能已经猜到了,这个 TLD 并不存在。

无需修改 DNS 即可在机器上实现 3 个不同站点的最简单方法是:

  • 您的计算机上有 3 个不同的 IP 地址(使用ifconfig eth0 add 10.0.0.101ifconfig eth0 add 10.0.0.102等...)

  • 在您的 Apache 上实现基于 IP 的虚拟主机。

  • 有一个如下所示的首页:

<ul>
         <li><a href="http://10.0.0.100/">Website1</a></li>
         <li><a href="http://10.0.0.101/">Website2</a></li>
         <li><a href="http://10.0.0.102/">Website3</a></li>
</ul>

实现这一点的另一种(更复杂)的方法是:

  1. 在您的机器上实现您自己的 DNS 服务器,以对诸如.bibicomputerTLD 之类的内容拥有权威性。

  2. 在您的bibicomputerDNS 区域上,使website1.bibicomputerwebsite2.bibicomputer等...指向您的 IP 地址。

  3. 让您的同事将您的 IP 地址添加到他们的 DNS 列表中(在 Linux 下/etc/resolv.conf:)。

但我敢打赌,贵公司的 IT 人员不会喜欢这个解决方案。

相关内容