在 Linux/OSX 上的 /etc/hosts/ 文件中,如何创建通配符子域?

Mik*_*keN 199 linux unix mac-osx localhost

我需要在我的本地主机上测试子域。我怎样才能有效地将这个结果添加*.localhost.com到我的/etc/hosts/文件中?

如果不可能,我该如何解决这个问题?我需要在我的本地服务器上测试通配符子域。它是一个 Django 开发服务器,Django 开发服务器可以处理子域吗?其他一些软件/路由可以给我想要的最终结果吗?

小智 173

安装dnsmasq(我在我所有的 Linux 桌面上都这样做作为 DNS 缓存)。在dnsmasq.conf添加行:

address=/localhost.com/127.0.0.1
Run Code Online (Sandbox Code Playgroud)

  • OSX with brew: 同上,但 brew install dnsmasq (19认同)
  • 杰出的!Mac 用户请注意,这真的很简单: 1. `sudo port install dnsmasq` 2. 编辑 `/opt/local/etc/dnsmasq.conf` 3. `sudo port load dnsmasq` (7认同)
  • 很棒的提示。对于 Ubuntu 14.04 桌面(默认运行 dnsmasq),创建一个名为 `/etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf` 的文件并将行 `address=/localhost.com/127.0.0.1` 放入它,然后重新启动。 (6认同)
  • 仅供参考 brew > 端口(重新@MattHumphrey 建议) (2认同)
  • 如何为多个域执行此操作?编辑文件后如何刷新?我想要 `*.localhost` 和 `*.loc`。我添加了两行:`address=/localhost/127.0.0.1` 和 `address=/loc/127.0.0.1`。出于某种原因,只有第一个有效。在注释掉两者并调用 `sudo service dnsmasq restart` 和 `sudo service network-manager restart` 之后,我仍然可以使用 *.localhost 版本。 (2认同)

小智 74

无法在/etc/hosts文件中指定通配符。明确指定所需的主机名,或者使用适当的规则设置本地名称服务器。


小智 48

我用 Python 编写了一个 dns 代理。它将读取 /etc/hosts 中的通配符条目。请参阅此处:https : //github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py

  • 现在,如果我们只能`pip install`它:) (2认同)

Ger*_*mbs 16

您需要设置 DNS 服务器并让每个客户端使用它进行解析。服务器本身可以像dnsmasq一样“轻”,也可以像BIND一样重。


小智 13

简单的工作流程(无需安装任何东西)

我个人喜欢为此创建一个 PAC 文件并让我的浏览器使用它。

第 1 步:创建一个文件,例如:*.proxy.pac*某处(我使用我的$home文件夹)

第 2 步:粘贴此代码(示例使用端口 8000):

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*localhost")) {
    return "PROXY localhost:8000";
  }
  return "DIRECT";
}
Run Code Online (Sandbox Code Playgroud)

第 3 步:让您的浏览器使用此 PAC 文件。

适用于 PAC 和 Firefox 的 Youtube 视频

第 4 步:现在您可以通过访问来测试您的应用:http://mysubdomain.localhost/

第 5 步:享受 :)

  • 也许值得一提的是,这只会影响您的浏览器。其他程序(如`wget`,不会受到此影响)。这本身不是问题,但也许最好提及这一点。 (5认同)

小智 6

我整理了我的一个旧项目:

https://github.com/airtonix/avahi-aliases

要求:

  • 可以安装 avahi 和 python-avahi 的 linux
  • 您可以使用 .local 域(avahi 不支持任何其他类型)

使用 dnsmasq 或 python dns 代理的优点:

  • 您本地网络上的其他 avahi/bonjour 用户可以解析您创建的别名并向网络宣布(前提是您允许访问端口 5353 )


小智 5

您不能在 中使用通配符/etc/hosts

请参阅此处,了解如何使用 BIND(内置但不活动的 DNS 服务器)和 Apache 在 OS X 上完成此操作。

  • Apache 与子域无关。 (5认同)