nginx常用的请求头参数和防DDOS攻击

前端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用来判断文件是否可执行

一些可用的全局变量

nginx的全局变量参数解释:

$arg_PARAMETER #这个变量包含GET请求中,如果有变量PARAMETER时的值。

$args     #这个变量等于请求行中(GET请求)的参数,例如foo=123&bar=blahblah;

$binary_remote_addr #二进制的客户地址。

$body_bytes_sent #响应时送出的body字节数数量。即使连接中断,这个数据也是精确的。

$content_length #请求头中的Content-length字段。

$content_type #请求头中的Content-Type字段。

$cookie_COOKIE #cookie COOKIE变量的值

$document_root #当前请求在root指令中指定的值。

$document_uri #与$uri相同。

$host #请求主机头字段,否则为服务器名称。

$hostname #Set to the machine’s hostname as returned by gethostname

$http_HEADER

$is_args #如果有$args参数,这个变量等于”?”,否则等于”",空值。

$http_user_agent #客户端agent信息

$http_cookie #客户端cookie信息

$limit_rate #这个变量可以限制连接速率。

$query_string #与$args相同。

$request_body_file #客户端请求主体信息的临时文件名。

$request_method #客户端请求的动作,通常为GET或POST。

$remote_addr #客户端的IP地址。

$remote_port #客户端的端口。

$remote_user #已经经过Auth Basic Module验证的用户名。

$request_completion #如果请求结束,设置为OK. 当请求未结束或如果该请求不是请求链串的最后一个时,为空(Empty)。

$request_method #GET或POST

$request_filename #当前请求的文件路径,由root或alias指令与URI请求生成。

$request_uri #包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。不能修改。

$scheme #HTTP方法(如http,https)。

$server_protocol #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。

$server_addr #服务器地址,在完成一次系统调用后可以确定这个值。

$server_name #服务器名称。

$server_port #请求到达服务器的端口号。

$uri #不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。该值有可能和$request_uri 不一致。$request_uri是浏览器发过来的值。该值是rewrite后的值。例如做了internal redirects后。

rewrite后面的flag可以是:

last

break

redirect

permanent

proxy_pass http://localhost:80;

proxy_set_header Host $host;

可以自动改变转发以后的域名信息

分类:
服务器运维

原文地址:https://www.cnblogs.com/kaishirenshi/p/12530685.html

时间: 2024-10-12 16:42:42

nginx常用的请求头参数和防DDOS攻击的相关文章

Http消息头中常用的请求头和响应头

作为Web开发对常用http的请求头和响应头熟悉了解一下还是很有必要的.比如请求头中Content-type指定了请求的内容,若类型是application/x-www-form-urlencoded,就可以调用reqeust的获取参数方法取到内容,若是其它都需要调用获取流的方法获取.又比如响应头X-Frame-Options 的设置直接决定了你的页面是否能被其它非同源的ifream嵌入,而这个设置可以是在html页面中,也可以是框架或代码的响应头设置中,也可以是在http服务器(nginx或t

转:nginx防DDOS攻击的简单配置

文章来自于: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module. 一.基本介绍 1.ngx_http_limit_req_module 配置格式及说明: 设置一个缓存区保存不同key的状态,这里的状态是指当前的过量请求数.而key是由variable指定的,是一个非空的变量,我们这里使用$binary_remote_addr,表示源IP为key值. limit_

Apache 实现http协议自动转成https协议,Apache 防DDOS攻击 使用mod_rpaf模块 mod_evasive模块

一:实践环境介绍 二:配置Apache,实现访问http页面自动转成https页面 需求1:整个站点都实现http自动转https 需求2:整个站点使用http协议,只有某个单独页面从http自动转到https 实验环境介绍 使用yum 安装apache Apache版本 # httpd -v Server version: Apache/2.2.15 (Unix) Server built:   Aug 13 2013 17:29:28 使用yum 安装openssl # yum instal

CNware防DDOS攻击介绍

近年来随着互联网带宽的不断增加,加上越来越多的DDOS黑客工具的发布,DDOS攻击的发起难度越来越低,DDOS攻击事件也处于上升趋势,这给互联网安全带来巨大的威胁.为了应对DDOS攻击,网络服务商非常注重防御来自外部的DDOS流量,包括购置防火墙,提高网络带宽等,投入了巨大的成本.这种属于"被动安全",即防止被他人从外部攻击.但在防御的过程中,有一个地方却一直被大多数服务商所忽略,那就是从IDC机房内部发起的DDOS攻击.如何主动抑制从内部发起的攻击,是"主动安全"

node.js配置允许跨域请求,设置允许携带的请求头参数

最近在用node.js写自己的后台时遇见了跨域问题,之前处理跨域都是在前端配置代理解决的,这次打算在后台解决,中途也遇到了一些坑,比如我在请求头里加了一个自定义的参数token,结果后台配置的时候没有允许请求能够携带该参数,造成预检请求发出后,就没任何响应了.为此折腾了半天才发现问题...还是对它不够了解,所以查阅了相关资料,下面做出自己的理解: 都知道跨域是因为浏览器的同源策略造成的,当客户端访问服务端时,如果两端的ip.端口.协议任意一个不同就会产生跨域.下面介绍node.js后台如何配置允

HTTP请求头参数

当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看某一次HTTP请求头的具体内容: Accept-Language: zh-cn,zh;q=0.5Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Accept: text/html,application/xhtml+xml,application/xml;q=0.

使用Nginx解决跨域,防盗链,宕机,DDOS攻击

一:负载均衡时服务器宕机轮询策略 在通过代理服务器nginx向真实的服务器发送请求时,如果有一个服务器集群,它们按照轮询或者权重的负载均衡策略运作下去,当轮到a(端口6060)服务器接受nginx的请求时, a服务器突然宕机了,那么没有做任何措施的情况下,这个请求会一直请求下去,直到被响应或者响应超时报错,这种情况下需要添加一些配置, 当有服务器宕机的时候,在一定时间内他没有响应,就换另一个服务器去接受这个请求 在负载均衡的配置基础上添加新的配置,下面字体 upstream backserver

CDN防DDoS攻击

随着近年来来网络技术的不断进步,CDN已经不只简单的用做网站加速,还能够更好的保护网站不被攻击.Cdn在相关节点中成功的建立动态加速机制以及智能沉于等机制,这种机制能够帮助网站流量访问分配到每一个节点中,智能的进行流量分配机制.如果cdn存在被ddos攻击的情况,Cdn整个系统就能够将被攻击的流量分散开,节省了站点服务器的压力以及节点压力.同时还能够增强网站被黑客给攻击的难度,真正帮助服务管理人员提供更多应该被攻击的时间,cdn能有效的防止ddos攻击,降低对网站带来的危害. 但是CDN防ddo

Azure上Linux VM防DDOS攻击:使用Apache mod_evasive

部署在云端的虚拟机和web服务,很容易受到DoS护着DDoS的服务攻击,让一些新上线的业务苦不堪言,当然各个云服务提供商也有不同层面DDOS的防护,然而由于防护粒度,攻击复杂度的关系,未必可以满足你的需求,本文介绍如何对使用了Apache httpd的用户做一些简单的配置,从而有效防护一些简单的DDOS攻击. mod_evasive模块是httpd对web服务器的一个DoS和DDoS防护模块,针对单个IP地址客户端对单个页面,访问总量等参数,对疑似DDOS的IP地址进行屏蔽,配置简单而且简单有效