测试服务器为特定域提供服务的能力

测试服务器为特定域提供服务的能力

假设您已Server A设置了您最喜欢的 Web 服务器守护程序来为 提供服务www.example.com。现在您想将其移动到。经过大量复制和配置后,新服务器似乎已准备就绪。最后需要进行一个测试:在更改 DNS 记录之前,当 DNS 记录仍指向服务器 A 时,Server B如何向服务器 B 请求?www.example.com


虽然我的主要问题已经得到解答,但是如果 /etc/hosts 不在我的影响范围内,是否可以通过将原始 HTTP1.1 发送给 Web 服务器来使用 telnet 进行测试?

答案1

DNS 是一个神奇的东西。如果对客户端 PC 有足够的控制权,您可以将 变成right.comwrong.comviceversa.io跳转到测试客户端 PC 并通过更改该客户端上的主机文件来处理其 DNS 解析,或者您可以做一些更复杂的事情,并为该主机提供一个简单的 DNS 服务器来查询,例如dnsmasq。无论您采用哪种方式进行此过程,最终目标都是使有关查询的 DNS 响应www.example.com使用服务器 B 的 IP 地址进行响应。HTTP 主机标头将带有 www.example.com 的 DNS 名称,但针对服务器 B。

魔法!

答案2

值得注意的是,对 HTTP 进行这样的测试实际上与 DNS 根本无关,而是与 HTTP 客户端作为Host标头发送的内容有关。

显然,客户端需要连接到正确的 IP 地址和端口,但除此之外,一切都取决于HostHTTP 请求本身中的标头。


为了进行快速测试,可以使用以下命令,而无需更改客户端上的任何操作系统级配置:

$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar

或者,就此而言,

$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar


要使用常规 Web 浏览器执行相同操作,您要么需要一个可以修改请求标头的浏览器扩展(或者可能是更改标头的 HTTP 代理),要么需要更改客户端计算机操作系统的配置。

正如前面提到的,进行此类配置更改的最简单方法是向文件中添加一个条目hosts。这样,客户端操作系统解析器库在查阅文件时就已经获得命中hosts,甚至不需要进行 DNS 查找。

其他选项包括将客户端上配置的 DNS 解析器服务器更改为按需要设置应答的名称服务器。

答案3

您可以使用 进行测试telnet。您需要通过键入命令来发出原始 HTTP 请求。您不能犯任何错误,而且有些服务器有超时,因此您还必须在该时间范围内键入整个请求。

该命令将是这样的:

telnet serverb 80

该请求看起来将会像这样:

GET / HTTP/1.1
Host: www.example.com

请注意,它必须以空白行结尾,因此您需要在主机头后按两次回车键。

答案4

如果您需要检查它是否有效,我建议使用一个简单的浏览器插件(如Modify HeadersFirefox),然后将其更改HOSTwww.mydomain.com

相关内容