nginx 限制ip、并发量、连接数

 

 

 一、在本地模拟正式环境

 

1、首先配置好本地的host

文件路径为C:\Windows\System32\drivers\etc

在host文件中添加

 

2、nginx服务配置

nginx 限制ip、并发量、连接数_第1张图片

 

3、配置完成 访问 http://www.djz.com/img/login.jpg 

显示如下就成功了

nginx 限制ip、并发量、连接数_第2张图片

二、限制ip的两种方法

1、第一种方法

 

 

a.配置

 

server {

listen    80;

server_name  www.djz.com;

allow   127.0.0.0/8;

deny all;

location ~ ^/img.*\.(gif|jpg|jpeg|png|html|js|css|map)$ {

root D:/;#指定图片存放路径  

}

}

 

b.访问

http://www.djz.com/img/login.jpg

 

符合 allow 127.0.0.0/8   8是掩码

 

正常访问

nginx 限制ip、并发量、连接数_第3张图片

 修改配置

server {

listen    80;

server_name  www.djz.com;

allow   129.0.0.0/8;

deny all;

location ~ ^/img.*\.(gif|jpg|jpeg|png|html|js|css|map)$ {

root D:/;#指定图片存放路径  

}

}

 

b.访问

http://www.djz.com/img/login.jpg

 

不符合 allow 129.0.0.0/8   8是掩码

 

访问被限制

nginx 限制ip、并发量、连接数_第4张图片

第一种方法基本完成限制配置

 

 

 

1、第二种方法

 

 

a.配置

 

server {

listen    80;

server_name  www.djz.com;

 

set $flag 0; #设置变量

if ($remote_addr !~* ^(127|123)\.){

set $flag "${flag}1";#符合条件赋值

}

if ($request_uri !~* "/static/warnning.html"){

set $flag "${flag}2";#符合条件赋值

}

if ($flag = "012"){#符合条件

return 301  /static/warnning.html;

}

 

location ~ ^/img.*\.(gif|jpg|jpeg|png|html|js|css|map)$ {

root D:/;#指定图片存放路径  

}

}

 

b.访问

http://www.djz.com/img/login.jpg

 

nginx 限制ip、并发量、连接数_第5张图片

 

正常访问

 

 

 修改配置

server {

listen    80;

server_name  www.djz.com;

set $flag 0; #设置变量

if ($remote_addr !~* ^(129|123)\.){

set $flag "${flag}1";#符合条件赋值

}

if ($request_uri !~* "/static/warnning.html"){

set $flag "${flag}2";#符合条件赋值

}

if ($flag = "012"){#符合条件

return 301  /static/warnning.html;

}

 

 

location ~ ^/img.*\.(gif|jpg|jpeg|png|html|js|css|map)$ {

root D:/;#指定图片存放路径  

}

}

 

b.访问

http://www./img/login.jpg

 

 

问被限制并跳转到自定义的页面

 

 

nginx 限制ip、并发量、连接数_第6张图片

 

第二种方法基本完成限制配置

 

三、并发量与连接数据的配置如下

 

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

client_max_body_size  200m;

    #gzip  on;

 

limit_conn_zone $server_name zone=conn:10m; 

#定义一个名为conn的limit_conn_zone用来存储session,

#大小是10M内存,1M能存储16000个状态;$binary_remote_addr是限制同一客户端ip#地址;

#$server_name是限制同一server最大并发数;

 

limit_req_zone $binary_remote_addr zone=allips:10m rate=200r/s;

#定义一个名为allips的limit_req_zone用来存储session,

#大小是10M内存,1M能存储16000个状态,以$binary_remote_addr为key,限制平均#每秒的请求为20个,

#rate的值必须为整数,如果限制两秒钟一个请求,可以设置成30r/m

 

   

 

 server {

listen    80;

server_name  www.djz.com;

#allow   129.0.0.0/8;

#deny all;

set $flag 0; #设置变量

if ($remote_addr !~* ^(129|123)\.){

set $flag "${flag}1";#符合条件赋值

}

if ($request_uri !~* "/static/warnning.html"){

set $flag "${flag}2";#符合条件赋值

}

if ($flag = "012"){#符合条件

return 301  /static/warnning.html;

}

 

 

location ~ ^/img.*\.(gif|jpg|jpeg|png|html|js|css|map)$ {

 

limit_conn conn 2000;#limit_conn为限制并发连接数

 

limit_req zone=allips burst=20 nodelay; #限制每ip每秒不超过20个请#求,漏桶数burst为5,

#brust的意思是,如果第1秒、2,3,4秒请求为19个,第5秒的请#求为25个是被允许的。

#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错#误。nodelay,

#如果不设置该选项,严格使用平均速率限制请求数,第1秒25个请#求时,

#5个请求放到第2秒执行,设置nodelay,25个请求将在第1秒执行

 

root D:/;#指定图片存放路径  

}   

 

location ~ ^/static{

root D:/nginx-1.15.7/html/;#指定图片存放路径  

}

 

}

 

 

server {

listen    80;

server_name  www.djz.com;

location ~ ^/img.*\.(gif|jpg|jpeg|png|html|js|css|map)$ {

 

root D:/;#指定图片存放路径  

}   

 

}

  

server {

         listen       8000;

         server_name  127.0.0.1;

 

         location / {

             root   html;

             index  index.html index.htm;

         }

 

 location ~ ^/static{

root D:/nginx-1.15.7/html/;#指定图片存放路径  

}

     }

 

}

基本配置完成

 

最后有兴趣可以前往我博客下载资源

https://download.csdn.net/download/qq_34665176/10945094

你可能感兴趣的:(nginx 限制ip、并发量、连接数)