通过nginx配置文件抵御攻击,防御CC攻击的经典思路!已关闭评论
0x00 前言
大家好,我们是OpenCDN团队的Twwy。这次我们来讲讲如何通过简单的配置文件来实现nginx防御攻击的效果。
其实很多时候,各种防攻击的思路我们都明白,比如限制IP啊,过滤攻击字符串啊,识别攻击指纹啦。可是要如何去实现它呢?用守护脚本吗?用PHP在外面包 一层过滤?还是直接加防火墙吗?这些都是防御手段。不过本文将要介绍的是直接通过nginx的普通模块和配置文件的组合来达到一定的防御效果。
0x01 验证浏览器行为
简易版
我们先来做个比喻。
社区在搞福利,在广场上给大家派发红包。而坏人派了一批人...
cc, cookie, limit, nginx, session阅读全文
1℃
今天遇到一个奇怪的问题,在提交表单时直接就出现 502 Bad Gateway! 开始怀疑是程序问题,后来检查程序正常,发现post字段数大于1000时就出现502 Bad Gateway 而不超过1000时就正常,Google了下。发现有提到php.ini里配置项 max_input_vars 默认没有开启,默认值是1000 于是修改 max_input_vars为自己适合的值。再次提交OK正常了。
502, bad gateway, max_input_vars, nginx阅读全文
1℃
Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。
例1:用Linux下的curl命令发送POST请求给Apache服务器上的HTML静态页
[root@localhost ~]# curl -d 11=1 http://www.92csz.com/index.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>405 Method Not Allowed</TITLE>
</HEAD>
<BODY>
<H1>Method Not A...
GET, html, nginx, post阅读全文
Apache的Order Allow,Deny 详解已关闭评论
Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。
所以,最常用的是:
Order Deny,Allow
Allow from All
注意“Deny,Allow”中间只有一个逗号,也只能有一个逗号,有空格都会出错;单词的大小写不限。上面设定的含义是先设定“先检查禁 止设定,没有禁止的全部允许”,而第二句没有Deny,也就是没有禁止访问的设定,直接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置, 开放所有内容的访问权。
按照上面的解释,下...
allow, apache, deny, htaccess, order阅读全文
4℃
3℃
用nginx做前端代理后,我们发现 HTTP_X_FORWARDED_FOR 无法获取到客户端真实的IP地址了。
原因 Nginx 默认并不会增加 X_FORWARDED_FOR 头信息,我们给他加上就好了。简单配置如下:
location /
{
proxy_pass http://www.92csz.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; //别忘了这一句
proxy_set_header HTTP_X_FORWARD...
forwarded, nginx, proxy_pass阅读全文
1℃
Nginx 变量漫谈(三)
转自:http://blog.sina.com.cn/openresty
也有一些内建变量是支持改写的,其中一个例子是 $args. 这个变量在读取时返回当前请求的 URL 参数串(即请求 URL 中问号后面的部分,如果有的话 ),而在赋值时可以直接修改参数串。我们来看一个例子:
location /test {
set $orig_args $args;
set $args "a=3&b=4";
echo "original args: $orig_args";
echo "args: $args";
}
这里我们把原始的 URL 参数串先保存在 $orig_args 变量中,然后通过改写 $a...
curl, echo, location, nginx阅读全文
Nginx 变量漫谈(二)已关闭评论
Nginx 变量漫谈(二)
转自:http://blog.sina.com.cn/openresty
关于 Nginx 变量的另一个常见误区是认为变量容器的生命期,是与 location 配置块绑定的。其实不然。我们来看一个涉及“内部跳转”的例子:
server {
listen 8080;
location /foo {
set $a hello;
echo_exec /bar;
}
location /bar {
echo "a = [$a]";
}
}
这里我们在 location /foo 中,使用第三方模块 ngx_echo 提供的 echo_exec 配置指令,发起到 location /bar 的...
curl, echo, location, nginx阅读全文
2℃
Nginx 变量漫谈(一)
转自:http://blog.sina.com.cn/openresty
Nginx 的配置文件使用的就是一门微型的编程语言,许多真实世界里的 Nginx 配置文件其实就是一个一个的小程序。当然,是不是“图灵完全的”暂且不论,至少据我观察,它在设计上受 Perl 和 Bourne Shell 这两种语言的影响很大。在这一点上,相比 Apache 和 Lighttpd 等其他 Web 服务器的配置记法,不能不说算是 Nginx 的一大特色了。既然是编程语言,一般也就少不了“变量”这种东西(当然,Haskell 这样奇怪的函数式语言除外了)。
熟悉 Perl、Bourne Sh...
curl, echo, location, nginx阅读全文
2℃
http keepalive
在http早期 ,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会 断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd 服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-alive并不是 免费的午餐,长时间的tcp连接容易导致系统资源无效占用。配置不当的keep-ali...
http, keepalive, tcp, timeout阅读全文