testing一个服务器为某个特定域服务的能力

假设您已经将Server A设置为您最喜欢的Web服务器守护程序,以便为www.example.com提供服务。 现在你想把它移到Server B 。 经过一堆复制和configuration后,新服务器似乎已经准备就绪。 最后的testing是:在更改DNSlogging之前,当DNSlogging仍然指向服务器A时,如何从服务器B请求www.example.com


虽然我的主要问题已经得到解答,但如果/ etc / hosts不在我的影响范围之内,是否可以使用telnet对其进行testing,而不是将原始HTTP1.1与Web服务器交谈?

DNS是一件神奇的事情。 有了足够的控制客户端电脑,你可以使right.comwrong.comviceversa.io 。 跳到testing客户端PC上,通过更改该客户端上的主机文件来解决DNSparsing,或者可以做一些更复杂的事情,并为该主机提供一个简单的DNS服务器来查询,如dnsmasq 。 无论您采用哪种方式进行此过程,最终目标都是使与www.example.com有关的查询的DNS响应以服务器B的IP地址响应。然后,HTTP主机标头将为www.example.com提供DNS名称,而是针对服务器B.

魔法!

需要注意的是,重要的是,对HTTP执行此类testing的重要性并不完全与DNS相关,而是HTTP客户端作为Host头值发送的内容。

客户端显然需要连接到正确的IP地址和端口,但是除此之外,这一切都归结为HTTP请求本身内联的Host头。

对于快速testing,可以使用以下命令而不更改客户端上的任何操作系统级configuration:

 $ 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代理),或者需要更改客户机操作系统的configuration。

如前所述,执行这种configuration更改最简单的方法是将条目添加到hosts文件。 这样,客户端操作系统parsing程序库在查询hosts文件时就会受到攻击,甚至不需要进行DNS查找。

其他选项包括将客户端上configuration的DNSparsing器服务器更改为名称服务器,该名称服务器根据需要进行设置。

你可以用telnet来testing这个。 您需要通过input命令来创build一个原始的HTTP请求。 你不能犯任何错误,一些服务器有一个超时,所以你也必须在该时间框架内键入整个请求。

该命令将是这样的:

 telnet serverb 80 

请求将如下所示:

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

请注意,它必须以空行结束,所以在主机标题之后按两次Enter。

我通常做的是强制www.example.com服务器B IP地址在我的/ etc / hosts。 自从我使用Mosaic以来,我一直这样做,因为我很less做这件事,所以我没有觉得需要find更好的。

环顾一下你,我发现https://superuser.com/questions/403042/custom-host-file-for-firefox这是由https://addons.mozilla.org/es/firefox/addon/回答foxyproxy-standard /但有一个最近的说法说它被遗弃了。

如果你需要检查它是否工作,我build议一个简单的浏览器插件,如Firefox的Modify Headers ,并将HOST更改为www.mydomain.com