ロードバランサーのスティッキのためにAWSロードバランサーに渡すことができるように、リモートIPをCookieとしてNginxに追加したいと思います。
location / {
proxy_set_header Cookie "$http_cookie; ip=$remote_addr";
proxy_pass http://app_upstream;
}
これらを使用してCookieを設定していますが、AWS ELBはこれをスティッキ性として受け入れていません。このサーバーはiframeとして使用されているため、デフォルトでサードパーティのCookieをブロックするSafari/iOの場合、ELBで生成されたCookieを負荷分散に使用できません。
私はnginxを捨てて、カスタムリバースプロキシを書くこともできます。
変数 $ http _ は、httpヘッダーに関するものです。したがって、$ http_Hostがある場合は、ヘッダーからホストを取得しています。 $ http_cookieと言うと、Cookie全体を取得しています。
変数 $ cookie _ は特定のCookieに関するものです。したがって、$ cookie_fooがある場合、fooという名前のcookieの値を取得します。
Cookieは自動的に渡されるため、ドメインやパスが異なる場合を除いて、何もする必要はありません。特定のCookieを追加しようとすると、次のようになります。
add_header Set-Cookie foo=bar;