为什么在0.0.0.0上运行Flask应用程序时会得到404

为什么在0.0.0.0上运行Flask应用程序时会得到404,flask,amazon-ec2,swagger,blueprint,Flask,Amazon Ec2,Swagger,Blueprint,我正在AWS EC2实例(Ubuntu)上测试我的Flask应用程序 主应用程序: from sonip.api.factory import create_app app = create_app() def main(): app.run(debug=True, threaded=True) if __name__ == "__main__": main() 烧瓶应用程序的实际设置在工厂完成,包括注册蓝图等 def create_app(): app = Flask

我正在AWS EC2实例(Ubuntu)上测试我的Flask应用程序

主应用程序:

from sonip.api.factory import create_app
app = create_app()
def main():
    app.run(debug=True, threaded=True)
if __name__ == "__main__":
    main()
烧瓶应用程序的实际设置在工厂完成,包括注册
蓝图

def create_app():
    app = Flask(__name__)
    app.config['SERVER_NAME'] = settings.FLASK_SERVER_NAME
    app.config['SWAGGER_UI_DOC_EXPANSION'] = settings.RESTPLUS_SWAGGER_UI_DOC_EXPANSION
    app.config['RESTPLUS_VALIDATE'] = settings.RESTPLUS_VALIDATE
    app.config['RESTPLUS_MASK_SWAGGER'] = settings.RESTPLUS_MASK_SWAGGER
    app.config['ERROR_404_HELP'] = settings.RESTPLUS_ERROR_404_HELP
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://{}:{}@{}:{}/{}".format(
        settings.DB_USER,
        settings.DB_PASS,
        settings.DB_HOST,
        settings.DB_PORT,
        settings.DB_NAME)
    db.init_app(app)
    blueprint = Blueprint('api', __name__, url_prefix='/api')
    app.register_blueprint(blueprint)

    return app
当我运行
python application.py
并使用
curl-X GET时http://localhost:5000/api
,返回正确的招摇过市页面。但是,如果我试图通过为外部流量指定
host=0.0.0.0
来运行该应用程序,那么对于相同的请求,我得到了404

(env) ubuntu@ip-172-31-18-136:~/aae$ python application.py
 * Serving Flask app "sonip.api.factory" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://localhost:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 948-062-124
127.0.0.1 - - [16/May/2018 18:07:24] "GET /api/ HTTP/1.1" 200 -
♥(env) ubuntu@ip-172-31-18-136:~/aae$ vi application.py
(env) ubuntu@ip-172-31-18-136:~/aae$ python application.py
 * Serving Flask app "sonip.api.factory" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 948-062-124
165.225.34.185 - - [16/May/2018 18:08:28] "GET /api/ HTTP/1.1" 404 -
端口5000已打开,以允许安全组中的所有入站流量。我尝试了一个香草烧瓶应用程序,只需几行代码,效果很好

app = Flask(__name__)
if __name__ == '__main__':
    app.run(debug=True, port=8080, host='0.0.0.0')

这至少意味着5000是可以的。可能是
蓝图
还是
招摇过市

app.run()。充其量,它的文档记录不足


尝试将
设置。FLASK\u服务器\u名称
更改为
0.0.0.0:5000
。或者,如果你的应用程序想要使用cookies,请尝试使用
something.dev:5000
并将
something.dev
的条目添加到本地
/etc/hosts

@DaveWSmith I将setting.FLASK\u SERVER\u NAME更改为
0.0.0:5000
,但没有帮助。然而,删除app.config['SERVER\u NAME']=settings.FLASK\u SERVER\u NAME
行就成功了