Web 服务器如何知道它必须将请求发送到应用程序服务器和静态文件?
How does web server know that it has to send the request to the app server and static files?
我来自后台,在 IIS 服务器上配置了一个网站 (asp.net) 代码。
我现在正在研究 Flask,并不清楚以下各项如何协同工作:Flask、WSGI、应用程序服务器和网络服务器。
Flask 只是 python 应用程序。 Flask 使用 Werkzeug WSGI(Web 服务器网关接口)。知道如何处理 HTTP 协议 request/response。应用程序服务器是内置的开发服务器或其他服务器,例如 gunicorn。网络服务器类似于nginx。
我在 jinja 模板中使用了静态文件 {{ url_for('static', filename='style.css') }}
。应用服务器(如 flask dev server 或 gunicorn)可以处理这个。但是nginx(web服务器)如何解析静态文件地址呢?
此外,在下面的示例图像中,当请求到达 Web 服务器(比如 nginx)时,它如何知道必须将此请求转发到应用程序服务器(gunicorn)?例如,它可能是一个静态文件 url 或者一个端点 url.
因此,在您的示例中,static
文件夹中有文件 style.css
。目前,静态文件由 flask web 服务器应用程序提供,而不是来自 nginx。问题是如何从 nginx 正确地在烧瓶中提供静态文件?
- 首先,您在 nginx 配置文件
中为 webapp/static 创建一个位置块
location /webapp {
proxy_pass http://127.0.0.1:6969;
}
location /webapp/static {
alias /path/to/webapp/static;
}
- 并为每个 webapp 设置
static_url_path
:app = Flask(name, static_url_path="/webapp")
我来自后台,在 IIS 服务器上配置了一个网站 (asp.net) 代码。
我现在正在研究 Flask,并不清楚以下各项如何协同工作:Flask、WSGI、应用程序服务器和网络服务器。
Flask 只是 python 应用程序。 Flask 使用 Werkzeug WSGI(Web 服务器网关接口)。知道如何处理 HTTP 协议 request/response。应用程序服务器是内置的开发服务器或其他服务器,例如 gunicorn。网络服务器类似于nginx。
我在 jinja 模板中使用了静态文件 {{ url_for('static', filename='style.css') }}
。应用服务器(如 flask dev server 或 gunicorn)可以处理这个。但是nginx(web服务器)如何解析静态文件地址呢?
此外,在下面的示例图像中,当请求到达 Web 服务器(比如 nginx)时,它如何知道必须将此请求转发到应用程序服务器(gunicorn)?例如,它可能是一个静态文件 url 或者一个端点 url.
因此,在您的示例中,static
文件夹中有文件 style.css
。目前,静态文件由 flask web 服务器应用程序提供,而不是来自 nginx。问题是如何从 nginx 正确地在烧瓶中提供静态文件?
- 首先,您在 nginx 配置文件 中为 webapp/static 创建一个位置块
location /webapp {
proxy_pass http://127.0.0.1:6969;
}
location /webapp/static {
alias /path/to/webapp/static;
}
- 并为每个 webapp 设置
static_url_path
:app = Flask(name, static_url_path="/webapp")