3

NGINX proxy_pass 配置有什么作用?例如,假设我有一个托管在 Amazon 的 EC2 服务上的 Django 应用程序。

在 EC2 上,假设我在 2 个 nginx 服务器前面有 1 个负载均衡器。nginx 服务器指向 4 个使用 Gunicorn 作为 WSGI 服务器的 django 应用服务器:

upstream my-upstream {
 server 12.34.45.65:8000;
 server 13.43.54.56:8000;
 server 13.46.56.52:8000;
 server 14.46.58.51:8000;
}

location / {
proxy_pass http://my-upstream;
}

proxy_pass 是什么?在这种情况下,它会是负载均衡器的 URL 吗?

4

2 回答 2

9

看一下nginx 的 HttpProxyModule,这就是 proxy_pass 的来源。proxy_pass 文档说:

该指令设置代理服务器的地址和位置将映射到的 URI。

因此,当您告诉 Nginx 时proxy_pass,您是在说“将此请求传递到此代理 URL”。

还有关于上游可用的文档:

该指令描述了一组服务器,它们可以在指令 proxy_pass 和 fastcgi_pass 中作为单个实体使用。

因此,您将 upstream 用于 proxy_pass 的原因是因为 proxy_pass 需要一个 URL,但您希望传递多个 URL(因此您使用上游)。

如果您的负载均衡器在您的 nginx 前面,那么您的负载均衡器 URL 将不在此配置中。

于 2013-04-19T19:54:43.543 回答
0

应该是:proxy_pass http://my-upstream;

nginx 将对您的 4 个 djano+gunicorn 实例(您的 my-upstream)上的所有请求进行负载平衡。负载均衡器将指向 nginx 服务器。

于 2013-04-20T06:51:43.583 回答