在具有多个虚拟主机的服务器上通过 IP 地址访问无需域名的网站

在具有多个虚拟主机的服务器上通过 IP 地址访问无需域名的网站

我有一个 Digital Ocean droplet,通过虚拟主机托管了 5 个网站。一切正常。它们的域名分别指向每个网站。使用 Ubuntu 14.04 和 Apache。

我想添加第六个“测试”网站,但不提供指向它的域名。我想用它来测试一些 WordPress 内容。此网站主页的物理位置是:

/var/www/test_site/html/index.html

假设我的服务器的 IP 地址是 198.51.100.55

我需要做什么才能使互联网上的任何人都可以访问这个主页?

http://198.51.100.55/test_site/html/index.html

答案1

摘要:除非您使用域名,否则无法让每个人都使用它。但如果您只是将198.51.100.55其视为另一个域名,它将适用于大多数用户 - 至少目前如此。

我的建议是为您的测试网站创建一个域名。可能的选项包括:获取新域名、使用现有域名之一的子域名、使用来自此类域名提供商之一的免费子域名。


http://198.51.100.55/test_site/html/index.html整个互联网永远无法访问该 URL 。

正在部署没有 IPv4 的新网络。为了允许此类网络上的客户端访问仅限 IPv4 的资源,正在使用 DNS64 和 NAT64 等技术。如果您的服务器名称是test.example.com此类客户端的连接流程,则工作方式如下:

  • 浏览器向 ISP 的 DNS 递归器发送查询,请求获取以下地址的 AAAA 记录:test.example.com
  • ISP 的 DNS 递归器向权威服务器请求example.comAAAA 记录test.example.com
  • 权威服务器回复说不存在这样的记录。
  • ISP 的 DNS 递归器会回退到 DNS64,并向权威服务器请求example.comA 记录test.example.com
  • 权威服务器回复198.51.100.55
  • DNS 递归器将其中一个 ISP NAT64 网关的前缀(我们称之为2001:db8:c481:4960:88df:da01::/96IPv4 地址)连接起来。结果是2001:db8:c481:4960:88df:da01:198.51.100.55AKA 2001:db8:c481:4960:88df:da01:c633:6437
  • DNS 递归器向浏览器发送响应,说明 的 AAAA 记录test.example.com2001:db8:c481:4960:88df:da01:c633:6437
  • 浏览器向 上的 NAT64 发送一个 SYN 数据包2001:db8:c481:4960:88df:da01:c633:6437
  • NAT64 通过剥离目标 IP 地址的前 96 位并用其自己的 IPv4 地址替换为源,将 SYN 数据包从 IPv6 转换为 IPv4。
  • 通信继续进行,NAT64 将转换 TCP 连接中的每个数据包。

但是,当您尝试使用 IP 地址而不是域名执行此操作时,它就会崩溃。浏览器永远不会发送任何 DNS 请求,因此它永远不会知道要用198.51.100.55替换2001:db8:c481:4960:88df:da01:c633:6437。相反,浏览器将尝试连接到198.51.100.55,但主机没有 IPv4 路由,因此内核将告诉浏览器服务器无法访问。

使网站可供此类网络上的用户使用(不破坏其他任何内容)的唯一方法是为您的网站提供域名。

如果您只想让您的网站仅对互联网的很大一部分人开放(随着时间的推移,这个比例会越来越小),那么您可以简单地将其视为198.51.100.55另一个域名并相应地配置虚拟主机。

它看起来像这样:

<VirtualHost 198.51.100.55:80>
    ServerName 198.51.100.55
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

答案2

放置以下内容配置文件中的其他虚拟主机定义。

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.fakesite.com
DocumentRoot /var/www/test_site/html/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后重新加载 Apache。

相关内容