NGINX proxy_pass到变量的ELB

问题描述 投票:0回答:1

我正在尝试为nginx设置代理规则,该规则将在服务API的某些节点框前面击中内部负载均衡器。我想在地址中使用一个变量来强制它解决,因为地址在aws中是多么动态。

原始设置工作正常,但偶尔指向一个不再存在的地址,导致如预期的间歇性问题:

location /protected/ {
  proxy_pass http://my-internal-aws-loadbalancer.com:8083/protected/;
}

但是当我点击相同的路线时,这会产生404错误:

location /protected/ {
  set $node "my-internal-aws-loadbalancer";
  proxy_pass http://$node:8083/protected/;
}

还有一点需要注意,这是一个帖子请求。我想我很困惑为什么添加变量会破坏这个。

nginx elastic-load-balancer
1个回答
2
投票

所以...经过大量的观察和阅读后,我相信我已经解决了这个问题。在proxy_pass中使用变量时,nginx确实不会表现相同。

article非常有帮助。关于这种情况的整篇文章的TLDR是添加变量确实导致nginx在proxy_pass上表现不同,因此从变量URL中删除尾部斜杠并重写在解决问题之后可能出现的任何事情。

location ~ ^/protected/(.*)$ {
  resolver 8.8.8.8;
  set $node "http:///my-internal-aws-loadbalancer.com:8083/";
  proxy_pass $node/protected/$1;
}
© www.soinside.com 2019 - 2024. All rights reserved.