nginx限制时间段访问-安全
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

nginx限制时间段访问-安全

yuc
yuc
2024-08-26 / 最后修改: 2024-08-26 03:08 / 0 评论 / 2 阅读 / 正在检测是否收录...
安全加固之限制访问时间段

之前我们做过按照 url 、客户端ip来做黑白名单,这次我们尝试通过控制时间段来做黑白名单的访问

主要的需求是开放某个日期范围内上午9点到下午18点之间访问,其余时间不允许访问。经过测试调整后的代码如下

map $time_iso8601 $deny {
    default 0;
    ~*^2024-08-(2\d|3(0|1))T(0[0-8]|1[8-9]|2[0-3]):.* 1;
}
server {
    listen 12000;
    default_type text/html;
    add_header Content-Type 'text/html; charset=utf-8';
    set $checkurl 0;
    if ( $request_uri !~ "/bhpoc($|/$|.*\.(jpg|png|css|js|woff|ico))" ) {
        set $checkurl 1;
    }
    set $ss $checkurl$deny;
    if ( $ss = 11 ) {
        return 403;
    }
    location / {
        proxy_pass http://192.168.10.120:19836;
    }
}

上面的关键配置部分的含义如下:

  1. 映射一个变量 deny,其默认值是 0 ,但是如果正则匹配到 $time_iso8601 的时间范围是 2024-08-232024-08-3100-0818-23 点,则其值为 1
  2. 设置一个变量 $checkurl,其值初始化为 0
  3. 进入 if 判断,如果客户端访问的 url 地址为上面的正则表达式,主要为首页和一些静态文件,则 $checkurl 的变量值为 1
  4. 设置一个变量 $ss, 其值为前面两个变量 $deny$checkurl 的拼接
  5. 判断变量 $ss 如果其值为 11,则认为其匹配到禁止的时间范围,以及匹配到百名单以外的 url,则范围 403,或者范围 401 也是可以的
  6. 其他情况下,不符合时间范围和url黑名单的,则范围正常的请求
0

评论

博主关闭了当前页面的评论