在多个端口上代理到同一台服务器?

在多个端口上代理到同一台服务器?

我正忙于配置驻留在一台服务器上的 nginx 反向代理,该代理将位于另一台服务器上的一个(目前)apache web 服务器前面,该服务器将通过 mod_wsgi 为 Django 应用程序提供服务。

几天前浏览互联网时,我看到了一些 nginx 配置示例,其中有人在上游指令中设置了同一台服务器的多个端口。

因此,与其这样做(我现在或多或少已经这样做了),

upstream webserver {
    server backend1.com;
}

他有:

upstream webserver {
    server backend1.com:8000;
    server backend1.com:8001;
    server backend1.com:8002;
}

显然,Apache 已配置为监听这三个端口。(我认为在我所看到的示例中,我再也找不到了,它是一个运行 Rails 的混合后端,不管它值多少钱。)

无论如何,我的问题是,这种方法有什么优点或缺点?我知道这两种方法都有效,我可以轻松配置任一选项,但我只是想知道是否有人可以解释一下这是一种好的/坏的/不必要的配置以及原因。

非常感谢您提供的任何智慧。

答案1

之所以需要多个后端,是因为 Mongrel 是单进程。为了扩展,您需要多个进程,每个核心一个或两个,并让代理提供单个入口点。此外,您的代理可能是多线程的,能够管理用户连接,同时保持单进程服务器繁忙。

如果您的后端是 Apache,它将产生多个子进程来处理传入的请求,假设您没有运行 mpm-worker,因此不需要多个进程。

相关内容