📜  flask gunicorn 获取 ip - Python (1)

📅  最后修改于: 2023-12-03 15:30:47.016000             🧑  作者: Mango

Flask和Gunicorn获取IP

当使用Flask和Gunicorn搭建Web应用时,有时需要获取客户端的IP地址。这可以通过获取请求头中的X-Forwarded-For字段来实现。

Flask应用

在Flask应用中,可以使用request模块获取请求头中的X-Forwarded-For字段。以下是一个简单的示例:

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    # 获取客户端IP地址
    ip = request.headers.get('X-Forwarded-For', request.remote_addr)
    return f"你的IP地址是:{ip}"

if __name__ == '__main__':
    app.run()

在这个示例中,我们先使用request.headers.get方法从请求头中获取X-Forwarded-For字段,如果不存在则使用request.remote_addr方法获取客户端的IP地址。

Gunicorn应用

在Gunicorn应用中,也可以使用类似的代码来获取客户端的IP地址。以下是一个简单的示例:

from flask import Flask, request
from werkzeug.contrib.fixers import ProxyFix

app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)

@app.route('/')
def index():
    # 获取客户端IP地址
    ip = request.headers.get('X-Forwarded-For', request.remote_addr)
    return f"你的IP地址是:{ip}"

if __name__ == '__main__':
    app.run()

在这个示例中,我们使用werkzeug.contrib.fixers.ProxyFix中间件将请求头中的X-Forwarded-For字段转换为request.remote_addr方法可以使用的格式。

使用这种方法,我们可以轻松地获取客户端的IP地址,并在我们的应用中使用它来做一些有趣的事情。