在 HTTPD 中运行 Glance

简而言之,如果尝试在没有 eventlet 的情况下运行 Glance,它将无法正常工作,并且引入另一个 Web 服务器只会让情况变得更糟。这项尝试在没有得到适当的兴趣或资源来修复底层问题的情况下失败了。

目前不建议将 Glance 作为裸 WSGI 应用程序在任何 httpd 下部署。

自 Pike 版本发布以来,Glance 已经打包了一个 WSGI 脚本入口点,使您可以将其与 Apache HTTPD 或 nginx 等真正的 Web 服务器一起运行。为了部署它,有几种模式,但它们都以不同的方式失败。本文档提到了尝试使用 Apache HTTPD 部署 Glance 的三种常见方法。

警告

如 Pike 和 Queens 版本说明中所指出的(请参阅每个版本的“已知问题”部分),Glance 项目团队建议以其正常的独立配置运行 Glance,尤其是在生产环境中。以本文档描述的方式部署 Glance 时,Glance 的全部功能不可用。特别是,在这种配置下,可互操作的镜像导入功能无法工作。有关详细信息,请参阅版本说明。

uWSGI 服务器 HTTP 模式

这从未正常工作过,也没有任何开发重点。

我们能说的最清楚的就是不要这样做。

mod_proxy_uwsgi

由于我们仅支持 Python 3,因此自 Ussuri 以来,这无法实现。

理论上,这与 mod_wsgi 相同,但即使没有分块编码,代码在 uwsgi 下仍然存在问题。

mod_wsgi

不建议使用 mod_wsgi 使用 Glance。mod_wsgi 协议不支持 Transfer-Encoding: chunked,因此不适合与 Glance 一起使用。但是,理论上您可以使用 mod_wsgi 部署 Glance,但它将在任何使用分块传输编码的请求上失败。

词汇表

uwsgi 协议

uWSGI 服务器使用的原生协议。(该首字母缩略词故意全部小写。)

https://uwsgi-docs.readthedocs.io/en/2025.2/Protocol.html

uWSGI 项目

一个旨在开发构建托管服务的完整堆栈的项目。它生成软件,即 uWSGI 服务器,作为名为 uwsgi 的模块在 Python 代码中公开。

https://uwsgi-docs.readthedocs.io/en/2025.2/index.html

https://pypi.ac.cn/project/uWSGI/

https://github.com/unbit/uwsgi

mod_wsgi

一个 Apache 2 HTTP 服务器模块,支持 Python WSGI 规范。

https://modwsgi.readthedocs.io/en/develop/

mod_proxy_uwsgi

一个 Apache 2 HTTP 服务器模块,为 mod_proxy 提供 uwsgi 网关。它使用 uwsgi 协议与 uWSGI 服务器通信。

https://httpd.apache.org/docs/trunk/mod/mod_proxy_uwsgi.html

WSGI

Web 服务器网关接口,一种作为 PEP 3333 发布 Python 标准。

https://wsgi.readthedocs.io/en/2025.2/index.html