如果我在我的 LAN 中创建一个 Apache 网络服务器,并且有 2 个 VirtualHosts,都在端口 80 上,我是否应该在我的 LAN 的 DNS 服务器上注册它们的 ServerName 和/或 ServerAlias?
这就是我所做的(在此示例中使用下面的值):
LAN 域名 =company.local
域控制器(和 DNS 服务器)系统 = Windows Server 2016
Web 服务器的主机名 = myserver
Web 服务器的 IP = 192.168.0.123
Web 服务器的系统 = Ubuntu Server 22.04
在我的 Windows 桌面上使用tracert 192.168.0.123
(同一 LAN 上的独立机器),它回答Tracing route to myserver.company.local [192.168.0.123]...
在 上安装了 Apache myserver
。安装后,当我在桌面浏览器http://192.168.0.123
或上使用时http://myserver.company.local
,它会打开“Apache2 默认页面(有效!)“)。
然后我使用以下命令配置虚拟主机myserver
:
(内容/etc/apache2/sites-available/site_1.conf
):
<VirtualHost *:80>
ServerAdmin admin@site_1
ServerName site_1
ServerAlias www.site_1
DocumentRoot /var/www/site_1/public_html
</VirtualHost>
(内容/etc/apache2/sites-available/site_2.conf
):
<VirtualHost *:80>
ServerAdmin admin@site_2
ServerName site_2
ServerAlias www.site_2
DocumentRoot /var/www/site_2/public_html
</VirtualHost>
当我在桌面浏览器上输入以下任何地址时:
http://site_1
http://site_2
http://www.site_1
http://www.site_2
http://site_1.company.local
http://site_2.company.local
http://www.site_1.company.local
http://www.site_2.company.local
它返回一个包含消息的页面
嗯。我们找不到该网站。。
当我在桌面浏览器上输入以下任何地址时:
http://myserver.company.local
http://192.168.0.123
返回虚拟主机的页面站点_1,并附有消息
成功!site_1 虚拟主机已开始运行!。
这是否意味着我必须在 LAN 的 DNS 服务器上注册指向 的名称site_1
和? 我还应该注册指向吗? 或者我必须将它们注册为和? 我是否必须删除与关联的注册?site_2
192.168.0.123
www.site_1
www.site_2
192.168.0.123
site_1.myserver.company.local
site_2.myserver.company.local
myserver.company.local
192.168.0.123
答案1
DNS
域名系统仅将域名从人类可读的地址转换为 IP 地址。
就你的情况而言,你的 LAN 网络中的任何本地域都应指向你的网络服务器知识产权。(不是虚拟机)
反向代理
阿帕奇或者Nginx,它们的作用是监听 IP:port 并读取 HTTP 请求的标头,然后过滤用户想要的内容(存在主持人标头)。它通过套接字或 IP:PORT 将用户想要的内容与本地容器/虚拟机/服务进行映射。
当然,这些工具的功能更加强大,但这超出了本文的答案范围。
有很多针对(本地?)DNS 的解决方案,我不是微软的粉丝,也从未使用过 Windows Server。我想配置自己的专用 DNS 代理(它会缓存来自公共 DNS 的响应,并允许您根据需要自行配置)。您的解决方案是将所有 DNS 记录指向您的反向代理服务器:
myserver.company.local -> 192.168.0.123
site1.myserver.company.local -> 192.168.0.123
site2.myserver.company.local -> 192.168.0.123
当然可以
myserver.company.local -> 192.168.0.123
site1.company.local -> 192.168.0.123
site2.company.local -> 192.168.0.123
魔法只有一个,配置文件中的 SERVERNAME 必须与 DNS 域名匹配。-Apache 示例,nginx 示例- 就这样。