我有简单的flask rest api,它从数据库中获取数据并在json文件中将结果提供给用户。 flask服务器在提交时从html输入文件获取参数,这些参数用于从数据库中获取数据。它与烧瓶内置的WSGI服务器工作正常。我想在生产中使用nginx作为我的Web服务器和gunicorn作为应用程序服务器进行部署。当我运行docker容器并访问根URL时,我可以获取html表单供用户输入参数。当我点击提交时,会调用另一个api资源调用,但是我找不到'未找到的网址'或“内部服务器错误'。对于带有URL参数的get请求api调用的nginx位置配置,这肯定存在问题。请帮我告诉我如何为这种请求配置nginx proxy_pass URL。
我提交表单时,我的浏览器请求网址看起来像这样。 http://IP地址/ api / v1 / service?key = 12345& name = abc& id = 1234
HTML(form.html)
<form name="device" action="/api/v1/service">
Python查看功能
@app.route('/')
def my_form():
return render_template('form.html')
@app.route('/api/v1/service', methods=['GET'])
def my_form_get():
..............
.............
nginx服务器
server {
listen 80;
location / {
proxy_pass http://localhost:5000/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /api/v1/service {
proxy_pass http://localhost:5000/api/v1/service;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Gunicorn配置
[program:gunicorn]
command=/usr/bin/gunicorn run:app -b localhost:5000
directory=/deploy/app
答案 0 :(得分:0)
您可以使用以下nginx配置:
<input type="file" accept=".xls, .xlsx, .csv" placeholder="File to be upload" />