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吗?
答案 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服务器。