我尝试将DOS攻击保护添加到我的Web服务中。 我将下一个配置添加到我的nginx中:
$count=count($TempSelected);
for($i=1,$j=0;$i<$count;$i++){
if($TempSelected[$j]['disability']==$TempSelected[$i]['disability']){
if( abs($TempSelected[$j]['age']-$TempSelected[$i]['age']) <= 23 ){
$Student1 = $TempSelected[$j]['first_name'].' '.$TempSelected[$j]['last_name'];
$Student2 = $TempSelected[$i]['first_name'].' '.$TempSelected[$i]['last_name'];
unset($TempSelected[$i]);
unset($TempSelected[$j]);
$FirstEntry = $conn->prepare("SELECT id FROM ".$TableName." WHERE Checked = 0 LIMIT 1");
$FirstEntry->execute();
$id = $FirstEntry->fetchColumn();
$data = [
'student_1' => $Student1,
'student_2' => $Student2,
'Checked' => 1,
'id' => $id,
];
$AddStudent = $conn->prepare("UPDATE ".$TableName." SET student_1=:student_1, student_2=:student_2, Checked=:Checked WHERE id=:id");
$AddStudent->execute($data);
}
}
$count=count($TempSelected);
}
然后我对其进行了测试。我生成的请求流为30rps,我希望将正确处理20rps,并且将截断10个请求。但是我的服务器每秒只处理一个请求,而其他所有请求都被nginx截断了503个http代码。
我想通过IP处理大约20个并发请求(无延迟),但每秒不超过一次。