|
|
发表于 2013-8-20 08:04:21
|
显示全部楼层
本帖最后由 ★Extreme★ 于 2013-8-20 08:07 编辑
来,给你写法,如果Nginx就编译LUA+LIMIT_REQ2模块,tengine就把下面的limite_req2改成limit_req:
写到nginx.conf的HTTP层:[ol]limit_req2_zone $binary_remote_addr $request_uri zone=one:2m rate=100r/s; [/ol]复制代码这是写到server层的:[ol]location @settime { default_type text/html; set $ip $binary_remote_addr; set $val a; set $exptime 3600; set $ipa $remote_addr; access_by_lua ' local ips = ngx.shared.ips local vala = ips:get(ngx.var.ip) if vala == nil then local setip = ips:set(ngx.var.ip, ngx.var.val, ngx.var.exptime) ngx.say("IP: ", ngx.var.ipa, " 让你妹的刷新那么快,DDOS你 ", ngx.var.exptime, " 秒。") else ngx.exec(403) end '; } location = /ddos { rewrite ^ /ddos.php?ip=$remote_addr break; #第一个动作显示的页面 } location /{#这里写上你原来的/的代码,例如tryfile那些。set $ip $binary_remote_addr; rewrite_by_lua ' local ips = ngx.shared.ips local vala = ips:get(ngx.var.ip) if vala == nil then return end if vala == "a" then ngx.exec("/ddos") else ngx.exec(403) end '; limit_req2 zone=one forbid_action=@settime nodelay; }[/ol]复制代码DDOS怎么写我就不给了,把访问的ip=xxxx的值赋值给变量IP就行了:$ip = $_GET['ip']; |
|