解决问题:使用Nginx+gunicorn部署时,限流模块获取ip地址进行限制时,只能获取到本机地址。
nginx配置修改
加上
proxy_set_header X-Real-IP $remote_addr;
flask-limiter获取ip地址函数修改
这是使用限流模块获取远程ip地址的函数
def get_remote_address():
"""
:return: the ip address for the current request (or 127.0.0.1 if none found)
"""
return request.remote_addr or '127.0.0.1'
我们要重写此函数
def get_remote_address():
"""
:return: the ip address for the current request (or 127.0.0.1 if none found)
"""
return request.headers.get("X-Real-IP")
然后应用配置
nginx -s reload
重启gunicron