如何在Flask gunicorn nginx设置中使用send_static_file?

时间:2016-01-29 03:42:24

标签: python nginx flask gunicorn

我想从我的Flask应用程序调用send_static_file,它引用一个静态html文件。代码在localhost上工作正常,但是当我用nxingx和gunicorn设置它时出现错误:

  

404网址未找到错误。

我的烧瓶应用程序路由到:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from .frontend import frontend

application = Flask(__name__, instance_relative_config=True)

application.register_blueprint(frontend, url_prefix='/app')

@application.route('/')
def hello_world():
    return "hello world" ------>>>>>THIS WORKS
    #return application.send_static_file('frontend/static/dist/index.html') ------>>>>>>>THIS DOES NOT WORK

我的nginx配置如下所示:

server {
    listen 80;
    server_name 52.34.18.48;
    error_log /var/www/appname/nginx_errorlog.log;
    access_log /var/www/appname/nginx_accesslog.log;

    root /var/www/appname;

    location / {
        proxy_pass http://127.0.0.1:8000;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

当我只返回一个字符串时,会显示该字符串,但是当我返回一个静态文件内容时,我收到错误。

更新1:

在调试中运行flask返回:

  
      
  • http://127.0.0.1:5000/上运行   (按CTRL + C退出)*使用stat * Debugger重新启动!
  •   
  • 调试器密码:XXX-XXX-XXX   127.0.0.1 - - [29 / Jan / 2016 04:09:20]“GET / HTTP / 1.0”200 -   127.0.0.1 - - [29 / Jan / 2016 04:09:29]“GET / app HTTP / 1.0”301 -   127.0.0.1 - - [29 / Jan / 2016 04:09:29]“GET / app / HTTP / 1.0”404 -
  •   

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

此功能由Flask内部使用。我不建议以这种方式使用它。

如果您需要提供静态文件,我建议您配置Nginx来为您处理。在网站的某些部分具有非常高性能的情况下,这非常棒!

如果您需要使用Flask,请查看send_from_directory。这可能就是你所需要的。