为什么建议使用 Apache 或 Nginx 部署 Flask 应用程序?它有一个内置的服务器,难道不能通过运行 python app.py
并在防火墙中打开正确的端口来部署它吗?
最佳答案
Werkzeug 的 WSGI 服务器不适用于生产环境。它是作为开发过程中的便利而提供的。它在开发时并没有考虑到安全性或性能(默认情况下它一次只处理一个请求)。使用真正的 WSGI 应用程序服务器,例如 uWSGI 或 Gunicorn 来提高性能,并通过一个真正的 Web 服务器(例如 Nginx)来代理它以提高性能和安全性。 Web 服务器擅长排队请求/响应,可以同时提供静态内容和其他内容,并且专为处理 SSL 而设计。 WSGI 服务器擅长有效地协调跨应用程序的多个请求。 Werkzeug 被设计为 WSGI 库,而不是 Web 服务器或 WSGI 服务器。
docs直接告诉你不要在生产中使用开发服务器。
You can use the builtin server during development, but you should use a full deployment option for production applications. (Do not use the builtin development server in production.)
此外,Web 服务器以 root 身份运行(然后放弃特权),因此它们可以监听标准端口 80 和 443。您应该永远不要以 root 身份运行应用程序,这样您只会能够绑定(bind)到 1024 以上的端口,因此用户必须知道端口而不仅仅是域。
关于python - 为什么 Flask 不应该与内置服务器一起部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33086555/