我正忙于配置驻留在一台服务器上的 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,因此不需要多个进程。