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

时间:2013-04-19 18:28:51

标签: django nginx amazon-ec2 gunicorn

NGINX proxy_pass配置有什么作用?比方说,我有一个Django应用程序,它托管在亚马逊的EC2服务上。

在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;
}

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

2 个答案:

答案 0 :(得分:4)

查看nginx's HttpProxyModule,这是proxy_pass的来源。 proxy_pass docs说:

  

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

因此,当您告诉Nginx proxy_pass时,您说“将此请求传递给此代理网址”。

还提供了有关upstream的文档:

  

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

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

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

答案 1 :(得分:0)

它应该是: proxy_pass my-upstream;

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