指哪打哪:如何控制HTTP请求命中指定负载

—— HttpWebRequest.Host的小技巧

momo314相同方式共享非商业用途署名转载

前段时间遇到一个问题,一个站点(假设叫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一下,没啥好说的

✎﹏ 本文来自于 momo314和他们家的猫,文章原创,转载请注明作者并保留原文链接。