这里是文章模块栏目内容页
nginx限制地址访问ip限制
#添加IP至allow(例如我们将10.208.96.192和10.208.96.193加入)
location = /index.html
 { 
  allow 10.208.96.192; 
   allow 10.208.96.193; 
   deny all; 
   root /work/weichuangli; 
  }

屏蔽单个ip访问

# 格式: deny ip;deny 123.68.23.5;

允许单个ip访问

# 格式: allow ip;allow 123.68.25.6;

屏蔽所有ip访问

deny all;

允许所有ip访问

allow all;

屏蔽ip段访问

# deny ip/mask
# 屏蔽172.12.62.0到172.45.62.255访问的命令 
deny 172.12.62.0/24;

允许ip段访问

# allow ip/mask
# 屏蔽172.102.0.0到172.102.255.255访问的命令 
allow 172.102.0.0/16;

配置说明
新建一个配置文件,如blockip.conf。在其中编写相关的ip限制语句,然后在nginx.conf中加入如下配置:

# 配置ip限制策略include blockip.conf;

nginx会根据配置文件中的语句,从上至下依次判断。因此,写在前面的语句可能会屏蔽后续的语句。

正确示例

# 允许部分ip访问
allow 123.45.25.6;allow 123.68.52.125;allow 123.125.25.106;# 禁止其余ip访问
deny all;

nginx_IP限制

#可能存在有些IP我们是不想被限制的,则可利用nginx_http_geo_module 和 ngx_http_map_module模块http {
  # 定义名为$whiteiplist的geo,会根据client IP 映射成不同的值,默认值为1,白名单ip的值为0
  geo $whiteiplist {
    default 1;    #IP默认映射为1,根据geo的优先级,优先匹配完整IP。
    192.168.1.10 0;  #将192,168.10.0映射为0
    192.168.1.11 0;
  }
  # 定义名为$limit变量,$limit变量的值是由$whiteiplist的值决定的,当$whiteiplist为1时,$limit的值为$binary_remote_addr;当$whiteiplist为0时,$limit的值为空
  map $whiteiplist $limit {
    1 $binary_remote_addr;
    0 "" ;
  }
  # 定义一个key为$binary_remote_addr、名字为addr、空间大小为10M的limit_conn_zone
  limit_conn_zone $binary_remote_addr zone = addr:10m;
  # 定义一个key为$limit、名字为one、空间大小为10M、速度限制为1次每秒的limit_req_zone
  limit_req_zone $limit zone = one:10m rate=1r/s;
  server {
    location /search/ {
      # 定义当前location下$binary_remote_addr对应的连接数不能超过1
      limit_conn addr 1;
      # 定义当前location请求受名为one的limit_req_zone限制,令牌数为5,请求溢出后直接报错
      limit_req zone = one burst=5 nodelay;
    }
  }}



作者:yichen_china
链接:https://www.jianshu.com/p/a4bb1b2516c2
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


更多栏目
相关内容