微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Web 服务器如何知道它必须将请求发送到应用服务器和静态文件?

如何解决Web 服务器如何知道它必须将请求发送到应用服务器和静态文件?

我来自在 IIS 服务器上配置网站 (asp.net) 代码后台

我现在正在研究 Flask,但不清楚以下如何协同工作:Flask、Wsgi、应用服务器和网络服务器。

Flask 只是 Python 应用程序。 Flask 使用 Werkzeug Wsgi(Web 服务器网关接口)。知道如何处理 HTTP 协议请求/响应。应用服务器要么是内置的开发服务器,要么是其他服务器,例如 gunicorn。 Web 服务器类似于 Nginx

我在 jinja 模板 {{ url_for('static',filename='style.css') }} 中使用了静态文件。应用服务器(如flask dev server 或gunicorn)可以处理这个。但是Nginx(web server)是如何解析静态文件地址的呢?

此外,在下面的示例图像中,当一个请求到达 Web 服务器(比如 Nginx)时,它怎么知道这个请求必须转发到应用服务器(gunicorn)?例如,它可能是一个静态文件 url,也可能是一个端点 url。

enter image description here

解决方法

因此,在您的示例中,您在 style.css 文件夹中有文件 static。现在,静态文件是从 Flask Web 服务器应用程序而不是 nginx 提供的。问题是如何从 Nginx 对 Flask 中的静态文件提供服务?

  1. 首先,您在 nginx 配置文件中为 webapp/static 创建一个位置块
location /webapp {
  proxy_pass http://127.0.0.1:6969;
}

location /webapp/static {
  alias /path/to/webapp/static;
}
  1. 并为每个 webapp 设置 static_url_path:app = Flask(name,static_url_path="/webapp")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。