2017-06-24 22 views
0

私は、APIを提供するいくつかのノードボックスの前で内部ロードバランサに当たるnginxのプロキシルールを設定しようとしています。私はアドレスがawsにどのように動的であるために解決するためにアドレスで変数を使用したいです。NGINX proxy_pass to ELB to variable

元のセットアップが正常に動作しますが、時折、予期されるように断続的な問題の原因となったが、もはやなかったaddresssに指していた。

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

また、これはポストリクエストです。私はなぜ変数の追加がこれを壊すのかについて非常に混乱していると思います。

答えて

0

だから、多くの見た目と読書の後、私はこれを解決したと信じています。 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; 
} 
+0

最新バージョンのNginx:1.13.5がこの問題を考慮しているかどうかは誰にも分かりません。最新のバージョンでresovlerを引き続き使用する必要がありますか? – yogeshagr