使用 Gunicorn 设置应用程序 URL 前缀

Setting application URL prefix with Gunicorn

由于多进程池支持,我目前正在将基于 Pyramid WSGI 的应用程序从 Waitress Web 服务器迁移到 Gunicorn Web 服务器。

目前,Waitress 正在为应用程序提供服务:

from waitress import serve

serve(app,
      host='127.0.0.1',
      trusted_proxy="127.0.0.1",
      threads=32,
      port=port,
      trusted_proxy_headers="forwarded",
      url_scheme=scheme,  # HTTPS 
      url_prefix='/api')

现在,我想用 Gunicorn 提供相同的应用程序。我设法在 Gunicorn 上找到了所有匹配的选项,但没有 url_prefix。设置应用程序 URL 前缀的 Gunicorn 等效项是什么(我认为这有时也称为应用程序根目录)?

可以在 Gunicorn 中使用 SCRIPT_NAME 环境变量来配置 WSGI 应用程序根。

这是一个例子:

# name is for Datadog agent
# bind matches one in Caddyfile config
# give enough worker processes, threads will have GIL issues
# use SCRIPT_NAME to prefix our API
gunicorn --name backend --bind 127.0.0.1:3456 --workers 8 --threads 2 "backend.server.server:gunicorn_entry_point()" --env "SCRIPT_NAME=/api"

See also related Caddfyfile.