如何阻止IP地址访问我在Heroku上的Flask应用?

13 投票
2 回答
9063 浏览
提问于 2025-04-18 09:47

我有一个IP地址需要从我的网站上屏蔽掉。我在Heroku上运行一个Flask应用,现在我的服务器每秒收到50个请求,这绝对不正常。

我知道在Apache服务器上可以用htaccess来处理这个问题,那么在这里(Gunicorn服务器)有没有类似的办法呢?

2 个回答

2

试试使用 pre_request 这个服务器钩子,它来自 Gunicorn

def pre_request(worker, req):
    if req.remote_addr != 'ip to be blocked':
        pass
18

使用Flask中的before_request装饰器。这段代码会在每次请求之前被调用,这样你就可以检查一个被禁止的IP地址列表。如果请求的IP地址在这个禁止的列表中,就会返回403错误,表示禁止访问。

from flask import request, abort, current_app as app

ip_ban_list = ['127.0.0.1']

@app.before_request
def block_method()
    ip = request.environ.get('REMOTE_ADDR')
    if ip in ip_ban_list:
        abort(403)

撰写回答