Windows、Apache、Acrylic DNS 和通配符子域
Windows, Apache, Acrylic DNS, and wildcard subdomains
我正在尝试使用 Apache 2.4 在 Windows 8.1 上使用 Acrylic DNS 代理设置动态 VirtualHosts 子域,但我 运行 遇到了服务器未找到错误的问题。我已经阅读了很多答案,例如 this one,但我不知道哪里出了问题或如何解决它。
我的目标是设置一个本地域 (http://localhost.pc
) 以动态地从 /htdocs
中的文件夹为所有子域提供服务,因此 http://test.localhost.pc/
来自 /htdocs/test/
等。我的VirtualHost 配置设置为
<VirtualHost *:80>
UseCanonicalName Off
ServerName localhost.pc
ServerAlias localhost.pc www.localhost.pc
DocumentRoot C:/dev/apache/htdocs/
<Directory />
Options FollowSymLinks Includes ExecCGI Indexes
IndexOptions FancyIndexing HTMLTable FoldersFirst
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
UseCanonicalName Off
ServerName localhost.pc
ServerAlias *.localhost.pc
VirtualDocumentRoot C:/dev/apache/htdocs/%1/
<Directory />
Options FollowSymLinks Includes ExecCGI
IndexOptions FancyIndexing HTMLTable FoldersFirst
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我已经安装了 Acrylic DNS 代理,我已经将我的 WiFi 和我的(断开连接的)以太网的 IPv4 DNS 服务器更改为 127.0.0.1,并且我编辑了 AcrylicHosts.txt 以包含行
127.0.0.1 localhost.pc *.localhost.pc
Acrylic 似乎工作正常,我启用了调试日志和命中日志,并且正常的互联网浏览工作正常。但是,如果我访问我的本地域或子域,尽管 Acrylic 的调试日志显示
,但我仍收到服务器未找到错误
TResolver.Execute: Request ID 34019 received from client 127.0.0.1:55587 [Q=localhost.pc;T=AAAA;Z=84E301000001000000000000096C6F63616C686F737403706D6100001C0001].
TResolver.Execute: Response ID 34019 sent to client 127.0.0.1:55587 directly from hosts cache.
命中日志说
127.0.0.1 H Q=localhost.pc;T=A
127.0.0.1 H Q=localhost.pc;T=AAAA
从命令行 Ping localhost.pc 失败(找不到主机),但 nslookup 看起来正确
C:\>nslookup localhost.pc
Server: UnKnown
Address: 127.0.0.1
Name: localhost.pc
Addresses: 127.0.0.1
127.0.0.1
如果我然后将 127.0.0.1 localhost.pc
添加到 C:\Windows\System32\drivers\etc\hosts
并刷新 DNS 缓存,我至少可以加载 http://localhost.pc/
。 Acrylic 的全部意义在于能够使用通配符,但 http://test.localhost.pc
只有在我手动将它和任何其他 subdomain/folder 添加到 Windows 主机文件时才有效。
所以我猜如果手动将条目添加到 Windows 主机文件使事情正常,那么 Acrylic 就是问题所在。有没有人知道出了什么问题以及如何解决?
我修复了一个关于 AAAA 查询的错误,该错误未从版本 <= 0.9.27 中的 AcrylicHosts.txt 文件正确解析。
如果您使用最新的 (0.9.28) 版本应该没问题。
我正在尝试使用 Apache 2.4 在 Windows 8.1 上使用 Acrylic DNS 代理设置动态 VirtualHosts 子域,但我 运行 遇到了服务器未找到错误的问题。我已经阅读了很多答案,例如 this one,但我不知道哪里出了问题或如何解决它。
我的目标是设置一个本地域 (http://localhost.pc
) 以动态地从 /htdocs
中的文件夹为所有子域提供服务,因此 http://test.localhost.pc/
来自 /htdocs/test/
等。我的VirtualHost 配置设置为
<VirtualHost *:80>
UseCanonicalName Off
ServerName localhost.pc
ServerAlias localhost.pc www.localhost.pc
DocumentRoot C:/dev/apache/htdocs/
<Directory />
Options FollowSymLinks Includes ExecCGI Indexes
IndexOptions FancyIndexing HTMLTable FoldersFirst
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
UseCanonicalName Off
ServerName localhost.pc
ServerAlias *.localhost.pc
VirtualDocumentRoot C:/dev/apache/htdocs/%1/
<Directory />
Options FollowSymLinks Includes ExecCGI
IndexOptions FancyIndexing HTMLTable FoldersFirst
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
我已经安装了 Acrylic DNS 代理,我已经将我的 WiFi 和我的(断开连接的)以太网的 IPv4 DNS 服务器更改为 127.0.0.1,并且我编辑了 AcrylicHosts.txt 以包含行
127.0.0.1 localhost.pc *.localhost.pc
Acrylic 似乎工作正常,我启用了调试日志和命中日志,并且正常的互联网浏览工作正常。但是,如果我访问我的本地域或子域,尽管 Acrylic 的调试日志显示
,但我仍收到服务器未找到错误TResolver.Execute: Request ID 34019 received from client 127.0.0.1:55587 [Q=localhost.pc;T=AAAA;Z=84E301000001000000000000096C6F63616C686F737403706D6100001C0001].
TResolver.Execute: Response ID 34019 sent to client 127.0.0.1:55587 directly from hosts cache.
命中日志说
127.0.0.1 H Q=localhost.pc;T=A
127.0.0.1 H Q=localhost.pc;T=AAAA
从命令行 Ping localhost.pc 失败(找不到主机),但 nslookup 看起来正确
C:\>nslookup localhost.pc
Server: UnKnown
Address: 127.0.0.1
Name: localhost.pc
Addresses: 127.0.0.1
127.0.0.1
如果我然后将 127.0.0.1 localhost.pc
添加到 C:\Windows\System32\drivers\etc\hosts
并刷新 DNS 缓存,我至少可以加载 http://localhost.pc/
。 Acrylic 的全部意义在于能够使用通配符,但 http://test.localhost.pc
只有在我手动将它和任何其他 subdomain/folder 添加到 Windows 主机文件时才有效。
所以我猜如果手动将条目添加到 Windows 主机文件使事情正常,那么 Acrylic 就是问题所在。有没有人知道出了什么问题以及如何解决?
我修复了一个关于 AAAA 查询的错误,该错误未从版本 <= 0.9.27 中的 AcrylicHosts.txt 文件正确解析。
如果您使用最新的 (0.9.28) 版本应该没问题。