nginx安全配置

添加白名单:
添加文件:nginx/conf/limit/whiteip.conf
添加ip,也就是你自己的ip地址或者cdn地址,或者负载均衡服务器的ip地址,再或者你的安全代理服务器(安全宝或360网站卫士等)的地址。
可以是一个地址,也可以是一个地址池

127.0.0.1 0; #白名单: 127.0.0.1
172.16.0.0/16 0;  #白名单 172.16.0.0 ~ 172.16.255.255
192.168.0.0/24 0;  #白名单 192.168.0.0 ~ 192.168.0.255

添加文件 nginx/conf/limit/limit_zone.conf
内容如下

geo 
$whiteiplist { 
default 1; 
include limit/whiteip.conf;
 }
 map
 $whiteiplist $limit {
 1 $binary_remote_addr;
 0 ""; 
} 
 #除了白名单外的IP每秒最多处理 8 个请求

    limit_req_zone $limit zone=perreq:10m rate=8r/s;
    limit_conn_zone $limit zone=perip:10m;

添加文件 nginx/conf/limit/limit_location.conf

limit_conn perip 8; # 限制除了白名单外的IP,每个IP最大并发为8
limit_req zone=perreq nodelay;

limit_conn/limit_req 可以只保留其中一个看自己需要了!
修改 nginx/conf/nginx.conf 在 http { ... }
区域添加下面代码

include limit/limit_zone.conf;

然后在虚拟主机的配置文件的 location ~ .*.(php|php5)?$ { ... }
区域(就是处理php文件请求的区域)添加

include limit/limit_location.conf;

用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址最多有 50 个并发连接
你想开 几千个连接 刷死我? 超过 50 个连接,直接返回 503 错误给你,根本不处理你的请求了

limit_conn_zone $binary_remote_addr zone=TotalConnLimitZone:10m ;
limit_conn  TotalConnLimitZone  50;
limit_conn_log_level notice;

用户的 IP 地址 $binary_remote_addr 作为 Key,每个 IP 地址每秒处理 10 个请求

你想用程序每秒几百次的刷我,没戏,再快了就不处理了,直接返回 503 错误给你

limit_req_zone $binary_remote_addr zone=ConnLimitZone:10m  rate=10r/s;
limit_req_log_level notice;

具体服务器配置

server {
listen   80;
location ~ \.php$ {
            ## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了
    limit_req zone=ConnLimitZone burst=5 nodelay;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include fastcgi_params;
}
}

你可能感兴趣的:(nginx安全配置)