NGINX配置中的proxy_pass选项有什么作用?

noa*_*ale 2 django nginx amazon-ec2 gunicorn

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

在EC2上,假设我在2个nginx服务器前面有1个负载均衡器。Nginx服务器指向使用Gunicorn作为WSGI服务器的4个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;
}
Run Code Online (Sandbox Code Playgroud)

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

gir*_*uid 7

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

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

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

还有关于上游的文档:

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

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

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