用nginx+Gunicorn部署一个flask应用,我需要从访问者那里得到真实的ip。(对于 Gunicorn 在 nginx 之后无法获得 REMOTE-ADDR)我尝试通过以下方式从 X-Forwarede-for 获取客户端 IP:
client_ip = request.headers.getlist("X-Forwarded-For")[0]
有时我会像这样正确获取 client_ip:
x 转发:62.211.19.218
但有时我会得到这样的 client_ip 错误 - 结合代理 ip 地址(从一些不同的浏览器访问):
x 转发:62.211.19.218、177.168.159.85
nginx向App转发两个ip地址时,如何只获取第一个客户端ip(没有代理地址177.168.159.85)?
用户通过表单上传图像文件,我不想将原始上传的图像文件保存到磁盘,并通过Pillow从磁盘打开图像来调整图像大小.
我想首先在内存中调整此映像文件的大小,然后将调整大小的映像文件保存到磁盘.所以我导入StringIO作为缓冲区,但它不适用于Pillow.
这是代码:
Python3.4,Flask == 0.10.1,Pillow == 3.4.2
class Form():
img = FileField()
submit = SubmitField()
Run Code Online (Sandbox Code Playgroud)
from io import StringIO
from PIL import Image
from .forms import Form
@app.route('/upload_img', methods=['GET', 'POST'])
def upload_img():
form = Form()
im = Image.open(StringIO(form.img.data.read())
pass
Run Code Online (Sandbox Code Playgroud)
TypeError:initial_value必须是str或None,而不是字节