NGINX 配置中的 proxy_pass 选项有啥作用?
Posted
技术标签:
【中文标题】NGINX 配置中的 proxy_pass 选项有啥作用?【英文标题】:What does the proxy_pass option in the NGINX config do?NGINX 配置中的 proxy_pass 选项有什么作用? 【发布时间】:2013-04-13 05:44:50 【问题描述】: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 吗?
【问题讨论】:
【参考方案1】:看看nginx's HttpProxyModule,这就是proxy_pass的来源。 proxy_pass docs 说:
该指令将代理服务器的地址和 URI 设置为 将映射哪个位置。
因此,当您将 Nginx 告诉 proxy_pass
时,您是在说“将此请求传递到此代理 URL”。
还有关于upstream 的文档:
该指令描述了一组服务器,可用于 将 proxy_pass 和 fastcgi_pass 指令作为一个实体。
所以你使用 upstream 作为 proxy_pass 的原因是因为 proxy_pass 需要一个 URL,但你想传递不止一个(所以你使用上游)。
如果您的负载均衡器在您的 nginx 之前,您的负载均衡器 URL 将不在此配置中。
【讨论】:
【参考方案2】:应该是: proxy_pass http://my-upstream;
nginx 将对您的 4 个 djano+gunicorn 实例(您的 my-upstream)上的所有请求进行负载平衡。负载均衡器将指向 nginx 服务器。
【讨论】:
谢谢,这就是我要找的,我会试一试告诉你 这是错误的。除非您添加方案 http/https,否则它会给出错误 - nginx: [emerg] invalid URL prefix in /.../conf/nginx.conf:xx以上是关于NGINX 配置中的 proxy_pass 选项有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
nginx配置之proxy_pass路径加斜杠/以及包含路径的区别
如何更改 nginx proxy_pass 中的 request_uri?