Python 应用服务器和 Web 服务器共存吗?

Python 应用服务器和 Web 服务器共存吗?

我有一个网站 example.com,它在一个“普通”的 Web 服务器(即目前的 Apache)上运行,但希望将来能使用一种对 RAM 要求较低的替代方案,因此我不希望在 apache 上使用 mod_WSGI。

不久我将部署一个在 Python 应用服务器上运行的 Web 应用。我希望它能够响应对 example.com/reallycoolpythonwebapp/ 的所有请求,其余部分由 Web 服务器处理。

这样的架构是如何创建的?我是否希望能够找到指向相关在线文档的指针?

答案1

你可以在不同的端口上运行你的 Python 服务器,然后利用 Apache(或者任何像 nginx 这样的不错的 Web 服务器)的反向代理功能将所有请求(例如 /com/reallycoolpythonwebapp)反向代理到 Python 应用服务器

这对用户来说也是透明的

假设已安装并启用 mod_proxy,example.com vhost 中的某些 apache 配置可能如下所示

ProxyPass /reallycoolpythonwebapp/ http://localhost:3000/
ProxyPassReverse /reallycoolpythonwebapp/ http://localhost:3000/
<Proxy *>
allow from all
</Proxy>

答案2

当请求与 example.com/reallycoolpythonwebapp/ 匹配时,我可能会设置 Apache 将请求代理到 localhost:xyz(或你的 python 应用程序将监听的任何主机/端口)

您应该能够通过结合使用 mod_rewrite(以匹配目标 URL)和 mod_proxy 来实现这一点。

相关 Apache 文档:

http://httpd.apache.org/docs/2.0/mod/mod_proxy.html

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule

特别地,在第二个中,请注意表格中的条目:

^/somepath(.*) {url1}$1 [P] {url2}

答案3

最常见的答案是代理。首先mod_proxyhttp://httpd.apache.org/docs/2.2/mod/mod_proxy.html)。

相关内容