您的位置:首页 > 理论基础 > 计算机网络

nginx根据http_user_agent防DDOS

2010-12-01 11:23 453 查看
前端squid反向代理到nginx

nginx根据http_user_agent防DDOS

首先查看访问日志,找出可疑访问 找到http_user_agent 的特征,然后再作过滤

"Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)Cache-Control: no-store, must-revalidate"

if ($http_user_agent ~ must-revalidate) {

return 503;

}

#这样就返回503错误

location = / {

include proxy.conf;

if ( $http_user_agent ~* "MSIE 5.01" ) {

proxy_pass http://www.qq.com;

#access_log /usr/local/nginx/logs/k.log main;

}

proxy_pass http://windows.abc.com;

}

#判断一下user-agent,如果是MSIE 5.01就把它丢到另外一个地方去就可以了,比如指向www.qq.com,看看能不能抗得住,哈哈

proxy_hide_header Cache-Control;

最后开回Cache-Control,访问一下页面

这下这个链接就缓存到前端squid了,应用服务器不会死机了

#########################################################

nginx中location模块的详细参数介绍

Nginx的Location可以有以下几个匹配:

1. = 严格匹配这个查询。如果找到,停止搜索。

2. ^~ 匹配路径的前缀,如果找到,停止搜索。

3. ~ 为区分大小写的正则匹配

4. ~* 为不区分大小写匹配

5.!~和!~*分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配

* -f和!-f用来判断是否存在文件

* -d和!-d用来判断是否存在目录

* -e和!-e用来判断是否存在文件或目录

* -x和!-x用来判断文件是否可执行

一些可用的全局变量

$args

$content_length

$content_type

$document_root

$document_uri

$host

$http_user_agent

$http_cookie

$limit_rate

$request_body_file

$request_method

$remote_addr

$remote_port

$remote_user

$request_filename

$request_uri

$query_string

$scheme

$server_protocol

$server_addr

$server_name

$server_port

$uri

rewrite后面的flag可以是:

last

break

redirect

permanent

proxy_pass http://localhost:80;
proxy_set_header Host $host;

可以自动改变转发以后的域名信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 nginx