首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >采用flask制作web页面管理nginx配置的IP白名单

采用flask制作web页面管理nginx配置的IP白名单

作者头像
IT不难
发布2022-04-08 18:27:46
发布2022-04-08 18:27:46
2.1K1
举报
文章被收录于专栏:IT不难技术家园IT不难技术家园

前言

公司内部有一个平时用的测试系统,提供给客户做体验,只有简单的几个页面用来测试功能使用,也没有注册验证。最近发现有人滥用,因为调用的是正式的接口,造成了一定的混乱。于是通过nginx访问配置了IP访问白名单。问题又来了,业务那边每次找我添加白名单IP,更烦人了。于是写了web页面,用来控制nginx配置的白名单。让他们自己去添加,世界清静了...

配置

获取项目

下载地址: 百度网盘 :nginx-etcmanager

提取码:78rt

启动

代码语言:javascript
复制
tar xvf nginx-etcmanager.tgz -C /opt/nginx-proxy/
cd /opt/nginx-proxy/nginx-etcmanager/
screen python3 main.py

设置计划任务

每到整点,所有申请的白名单IP全部过期

代码语言:javascript
复制
0 * * * * flock -xn /tmp/reset_nginx.lock -c 'cd /opt/nginx-proxy/ && sh reset_nginx.sh'

脚本内容

代码语言:javascript
复制
#!/bin/bash
cd /opt/nginx-proxy/conf/ && /bin/cp -f nginx.conf.bak  nginx.conf
cd /opt/nginx-proxy/ && /usr/local/bin/docker-compose  restart

使用

web浏览器访问 http://ip:3002

说明

核心函数

代码语言:javascript
复制
@app.route('/api/addip', methods=['GET'])
def add_ip():
    """
    更新节点IP函数
    """
    if request.method == 'GET':
        info = request.values
        newip = info.get('newip', False)
        customer = info.get('customer', False)

    if not is_ipv4(newip):
        return jsonify({'msg': '输入IP非法', 'code': 1001})

    #获取IP地址列表
    h_list = get_ip_history()
    expired ="{}:00".format((datetime.datetime.now() + datetime.timedelta(hours=+1)).strftime("%Y-%m-%d  %H"))

    for item in h_list:
        jlist = item.split(",")
        if newip == item[0] and expired == item[1]:
            return jsonify({'msg': '当前IP可以直接访问,不用更新!', 'code': 1000})

    newip_str = "{},{},{}\n".format(newip, expired, customer)

    #更新nginx配置
    cmd = "sed -i '/allow 127.0.0.1;/i\ \ \ \ allow  {};' ../conf/nginx.conf && cd /opt/nginx-proxy/ && docker-compose restart".format(newip)
    status  = os.system(cmd)

    if status == 0:
        with open('./data/ip_list', 'a+') as fw:
            fw.write(newip_str)
        return jsonify({'msg': '更新成功', 'code': 1000})

    return jsonify({'msg': '更新失败', 'code': 1001})

本文共 238 个字数,平均阅读时长 ≈ 1分钟

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 配置
    • 获取项目
    • 启动
    • 设置计划任务
  • 使用
  • 说明
    • 核心函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档