iis上的网站,别人快速抓取导致服务器带宽被用光,怎么办?
处理iis上的网站被人快速抓取导致服务器带宽被用光的方法包括以下几点:
1、增加数据缓存机制:在服务器端可以增加缓存机制,将一部分内容缓存到服务器,以提高服务器的应答速度,减少对服务器带宽的需求。
2、使用CDN服务提高网络访问速度:使用CDN将访问热点内容缓存到CDN节点,让用户可以从更近的地点访问,可以极大地改善网站的访问速度,减少服务器的压力。
3、使用合理的服务器带宽:如果确实受到大量抓取访问,可以从服务器带宽方面来考虑,升级服务器带宽,可以更好地应对大量访问。
直接给你一个现成代码吧,实测套用后可行,直接将站点链接输进去就行:
using JinherAMPBTPDeploy;
using MicrosoftWebAdministration;
using RedisHelper;
using System;
using SystemCollectionsGeneric;
using SystemConfiguration;
using SystemIO;
using SystemLinq;
using SystemText;
using SystemThreading;
using SystemThreadingTasks;
namespace Redis
{
public class Program
{
static readonly string AppPoolName = ConfigurationManagerAppSettings["ApplicationPoolName"]ToString();
static readonly string WebSiteName = ConfigurationManagerAppSettings["WebSiteName"]ToString();
static readonly int SleepTime = intParse(ConfigurationManagerAppSettings["SleepTime"]ToString());
static ServerManager sm;
static void Main(string[] args)
{
ConsoleWriteLine($"检测程序启动,{WebSiteName}当网站或其应用池停下后,会自动启动。");
sm = new ServerManager();
new Thread(RecoveryWebSite)Start();
}
static void RecoveryWebSite()
{
while (true)
{
try
{
var pool = smApplicationPools[AppPoolName];
if (pool != null && poolState == ObjectStateStopped)
{
ConsoleWriteLine("检测到应用池" + AppPoolName + "停止服务");
ConsoleWriteLine("正在启动应用池" + AppPoolName);
if (poolStart() == ObjectStateStarted)
{
ConsoleWriteLine("成功启动应用池" + AppPoolName);
}
else
{
ConsoleWriteLine("启动应用池" + AppPoolName + "失败 " + SleepTime / 60 + "秒后重试启动");
}
}
var site = smSites[WebSiteName];
if (site != null && siteState == ObjectStateStopped)
{
ConsoleWriteLine("检测到网站" + WebSiteName + "停止服务");
ConsoleWriteLine("正在启动网站" + WebSiteName);
if (siteStart() == ObjectStateStarted)
{
ConsoleWriteLine("成功启动网站" + WebSiteName);
}
else
{
ConsoleWriteLine("启动网站" + WebSiteName + "失败 " + SleepTime / 60 + "秒后重试启动");
}
}
}
catch (Exception ex)
{
ConsoleWriteLine(exMessageToString());
}
GCCollect();
ThreadSleep(SleepTime);
}
}
}
}
服务器端所使用的软件则主要是Windows平台上的IIS以及主要应用在Linux平台上的Apache。
IIS(Internet Information Services),Internet信息服务,是Windows Server系统中提供的一个服务组件,可以统一提供www、ftp、smtp服务。
Windows Server 2008 R2中的IIS版本为75,相比以前版本的IIS在安全性方面有了很大的改善。
下面我们新建一台名为web的虚拟机来作为web服务器,为其分配IP地址19216815,将计算机名改为web,激活系统并加入到域,最后再创建快照。
首先仍是需要在服务器管理器中安装“web服务器(IIS)”角色。
IIS 75被分割成了40多个不同功能的模块,管理员可以根据需要定制安装相应的功能模块,这样可以使Web网站的受攻击面减少,安全性和性能大大提高。所以,在“选择角色服务”的步骤中我们采用默认设置,只安装最基本的功能模块。
安装完成后,可以通过管理工具中的Internet信息服务(IIS)管理器来管理IIS网站,可以看到其中已经建好了一个名为“Default Web Site”的站点。
在客户端计算机client1上打开IE浏览器,在地址栏输入web服务器的IP地址即可以访问这个默认网站。
我们还可以在DNS服务器中为web服务器添加一条主机记录,这样就可以通过域名wwwcoolpennet访问默认网站了。
其实只要对这个默认网站稍作修改,就可以作为一个真实的网站来使用了。
在IIS管理器中,点击默认站点右侧操作窗口中的“基本设置”,可以看到默认站点的物理路这个路径对应的就是站点的主目录。
主目录就是网站的根目录,保存着web网站的网页、等数据,是用来存放Web网站的文件夹,当客户端访问该网站时,Web服务器自动将该文件夹中的默认网页显示给客户端用户。
打开这个主目录,可以看到里面已经有一个名为iisstarthtm的网页文件以及一张,这也就是我们刚才所看到的默认网站所显示的网页。
如果我们已经制作好了一个网站,那么只要将网站的所有文件上传到这个主目录中即可。一个网站中的网页文件非常多,必须得挑选其中的一个网页作为网站的首页,也就是用户在输入网站域名后所直接打开的网页文件。
网站首页在IIS中被称为“默认文档”,在IIS管理器默认站点的主窗口中,打开“默认文档”可以对其进行设置。
可以看到系统自带有5种默认文档:Defaulthtm、Defaultasp、Indexhtm、Indexhtml、iisstarhtm。
其优先级依次从高到低。作为网站首页的Web文件必须使用上述5个名字中的一种,如果是使用的其它名字,则必须将其添加到文档列表中。
下面在默认网站的主目录中,用记事本任意编辑一个名为Defaulthtm(注意D要大写)的网页文件,并随意输入一些内容。然后在客户端上访问该网站,发现可以成功打开我们设置的首页。
0条评论