我创建了一个 LAMP 服务器,并在其中托管了几个网站。这些网站目前只有在我从我的 Ubuntu 机器上访问它们时才可用。如何修改虚拟主机,使网络中连接的所有设备也可以访问这些网站?
网站的.conf
位于/etc/apache2/sites-available/的文件如下所示:
网站1.com
<VirtualHost *:80>
ServerAdmin webmaster@website1.com
ServerName website1.com
ServerAlias www.website1.com
DocumentRoot /var/www/html/website1.com/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
网站2.com
<VirtualHost *:80>
ServerAdmin webmaster@website2.com
ServerName website2.com
ServerAlias www.website2.com
DocumentRoot /var/www/html/website2.com/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
主机文件如下所示:
127.0.0.1 localhost website1.com website2.com
只需在浏览器中输入它们的名称,就可以从我的 Ubuntu 机器访问这两个网站,但网络中的任何其他设备都无法访问它们。
最佳答案
你必须做两件事。
1.设置Apache虚拟主机
虚拟主机必须监听您的私有(private) IP,而不是 localhost。
使用 ifconfig
查找您的私有(private) IP终端中的命令并在输出中查找它。
$ ifconfig
...
wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.88.11 netmask 255.255.255.0 broadcast 192.168.88.255
...
我的私有(private)IP是 192.168.88.11
虚拟主机必须监听它:
<VirtualHost 192.168.88.11:80>
Note! Maybe *:80 also works!
2. 在本地网络中设置 DNS 服务器。
本地网络中的其他机器必须知道在哪里网站1.com . DNS 服务器必须解析 网站1.com 至 192.168.88.11 .
我的路由器是 MikroTik。通过管理面板,使用路由器的终端,我可以配置域的静态 DNS 以解析为内部 ip。
/ip dns static add name=website1.com address=192.168.88.11
我也可以使用正则表达式来匹配使用一个静态记录的多个域。
下面的正则表达式匹配所有的 .lan 域:foo.lan、bar.lan、anysite.lan 等。它们都将解析为 192.168.88.11。
/ip dns static add regexp=".+\.lan" address=192.168.88.11
您必须找出路由器的功能才能进行设置。
关于apache - 使本地网站可供本地网络中的所有设备使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55575778/