hosts 文件和不明确的行为。如何创建真正的别名?

hosts 文件和不明确的行为。如何创建真正的别名?

我正在尝试为由 vagrant(虚拟盒)运行的本地网站创建别名,因此我想通过/etc/hosts文件将来自 site.ru 的所有请求重定向到 192.168.10.10/site.ru。在 hosts 文件中,我有以下内容:

...
192.168.10.10/site.ru    site.ru

但是它并没有像我想要的那样工作。当我访问 site.ru 时,我出现在“真实”网站中。我希望有人能理解我并回答我的问题。

我做错了什么?

更新: 解决方案:如何在 nginx 中设置大量动态虚拟主机?

答案1

您当然可以使用 Ubuntu 的文件将主机名指向 LAN 上的 IP 地址hosts,但它不支持您使用的特定语法。从man hosts

此文件是一个简单的文本文件,将 IP 地址与主机名关联起来,每个 IP 地址一行。对于每个主机,应该有一行包含以下信息:

IP_address canonical_hostname [aliases...]

Ubuntu 中的 hosts 文件不指向主机名其他主机名,但仅限 IP 地址。

因此,不要这样写:

192.168.10.10/site.ru    site.ru

你应该这样写:

192.168.10.10            site.ru

这将导致site.ru被解析为,192.168.10.10而不是通过 DNS 解析为的任何内容。

然而,这可能会或可能不会有效地引导与域名(概念上)相关的所有流量site.ru。特别是,这通常不足以使像 192.168.10.10 这样的域www.site.ru也映射到 192.168.10.10。要实现这一点,请www.site.ru明确添加:

192.168.10.10            site.ru   www.site.ru

(如果愿意,您也可以为其创建单独的行。此行也必须以 IP 地址开头。)

hosts不会将流量引导至网站上的特定文件夹。

如果192.168.10.10/site.ru您指的是site.ruWeb 服务器上的目录192.168.10.10(即,如果您/使用小路分隔器),您不能使用该hosts文件来执行此操作。hosts文件不支持该行为任何操作系统;它与hosts文件的功能根本无关。

之所以行不通,是因为 hosts 文件将主机名重定向到 IP 地址。但192.168.10.10/site.ru不是 IP 地址。它是一个 IP 地址,后面跟着通过应用层协议。 看本文URL 不同部分的含义(以及如何仅通过 IP 解析一部分)。

在这种情况下,正确的解决方案是配置网络服务器根据访问网站的主机名提供不同的内容。这之所以可行,是因为 HTTP 协议包含 Web 浏览器告知 Web 服务器其正在使用的主机名的功能(基本上所有 Web 浏览器都会在适用时发送此信息)。

如果你有能力更改网络服务器,并且需要帮助设置“虚拟主机”并且网络服务器是 Ubuntu 系统,请随时在这里发布有关该问题的单独问题。

如果您没有能力更改 Web 服务器,那么您应该与有此能力的人员联系。

如果甚至绝对不是一个选择,那么你应该编辑你的问题(或者发布一个新的问题,你自己选择)来详细阐述你的情况。一个更混乱的解决方法,可以满足你的需求可能有可能。它可能涉及 HTTP代理服务器在每个上运行客户机器并通过 URL 重定向 HTTP 流量。

答案2

这是正确的语法IP ADDRESS SITE.COM真实的例子127.0.0.134 hackme.org

相关内容