基本HTTP代理

class werkzeug.middleware.http_proxy.ProxyMiddleware(app, targets, chunk_size=16384, timeout=10)

代理请求在指向外部服务器的路径下,将其他请求路由到应用程序。

此中间件只能代理HTTP请求,因为HTTP是WSGI服务器处理的唯一协议。其他协议(如WebSocket请求)不能在该层代理。这应该只用于开发,在生产中应该使用真正的代理服务器。

中间件采用将路径前缀映射到描述要代理到的主机的DICT的DICT::

app = ProxyMiddleware(app, {
    "/static/": {
        "target": "http://127.0.0.1:5001/",
    }
})

每个主机都有以下选项:

target

要发送到的目标URL。这是必需的。

remove_prefix

是否在将前缀发送到目标之前从URL中删除前缀。默认值是 False .

host
"<auto>" (默认值):

主机头将自动重写为目标的URL。

None

主机头未从客户机请求中修改。

任何其他值:

主机头将被该值覆盖。

headers

要与请求一起发送到目标的头的字典。默认值是 {{}} .

ssl_context

A ssl.SSLContext 定义如果目标是https,如何验证请求。默认值是 None .

在上面的示例中,下面的所有内容 "/static/" 代理到端口5001上的服务器。主机头被重写到目标,并且 "/static/" 前缀将从URL中删除。

参数:
  • app (WSGIApplication) -- 要包装的wsgi应用程序。

  • targets (t.Mapping[str, dict[str, t.Any]]) -- 代理目标配置。见上述说明。

  • chunk_size (int) -- 要从输入流读取并写入目标的块的大小。

  • timeout (int) -- 目标操作失败前的秒数。

Changelog

在 0.14 版本加入.