指哪打哪:如何控制HTTP请求命中指定负载
—— HttpWebRequest.Host的小技巧
前段时间遇到一个问题,一个站点(假设叫serveriphost.demo.com
)分别部署在两台负载上(192.168.1.98
/ 192.168.1.99
),站点提供了一个Url来reload当前站点。然后呢,在管理后台(部署在另外一台服务器上)中需要提供几个大button,分别来reload某一个负载上的站点或者一次性reload全部站点。
那么,问题来了,怎么样控制http请求命中指定的那一台负载服务器呢?
废话不多说,上代码:
string[] ips = new string[] { "192.168.1.98", "192.168.1.99" };
for (var i = 0; i < 50; i++)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + ips[i % 2] + "/server.html");
request.Host = "serveriphost.demo.com";
using (WebResponse response = request.GetResponse())
{
Console.Write($"{i.ToString().PadLeft(2, ' ')}:");
using (TextReader reader = new StreamReader(response.GetResponseStream()))
{
var result = reader.ReadToEnd();
if (result != ips[i % 2])
Console.WriteLine($"Host:{ips[i % 2]},Real:{result}");
else
Console.WriteLine("same.");
}
}
}
Console.WriteLine("End.");
Console.ReadKey();
注:假设站点中有一个叫 server.html
的页面,该页面其实是一个文本文件,里面唯一的内容就是服务器IP
嗯,就是这样,很简单的一个小功能,只是mark一下,没啥好说的