我的开发机器 (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.101
、ifconfig 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>
实现这一点的另一种(更复杂)的方法是:
在您的机器上实现您自己的 DNS 服务器,以对诸如
.bibicomputer
TLD 之类的内容拥有权威性。在您的
bibicomputer
DNS 区域上,使website1.bibicomputer
、website2.bibicomputer
等...指向您的 IP 地址。让您的同事将您的 IP 地址添加到他们的 DNS 列表中(在 Linux 下
/etc/resolv.conf
:)。
但我敢打赌,贵公司的 IT 人员不会喜欢这个解决方案。