導入:
このserverfaultの質問を読んでくださいバックエンドからの 301 による nginx 負荷分散の問題私の問題と多少似ていますが、答えは機能しません。Nginx はアップストリームの「名前」にリダイレクトしています。重要なのは、これは OpenShift 固有の質問ではないということです。
構成:
私は、OPENSHIFT_DIY_IP 127.8.143.129を持つDIY非スケールギア1台にnginx 1.4.4を正しくセットアップしました(ソースからビルドし、正常に動作することを検証しました[1])。これをAと呼びましょう。このギアに1台のTornadoサーバーをセットアップし、別の非スケールギアに別のTornadoをセットアップしました。(ギア=NATの背後にある同じLAN上のRed Hat Linuxボックスと仮定、簡略化)どちらも、openshift-hellotornado リポジトリこれを B と呼びます。B の DNS アドレスは pam-picaxe.rhcloud.com です。A の DNS アドレスは main-picaxe.rhcloud.com です。
main-picaxe.rhcloud.comを閲覧するたびに、ブラウザは302 Foundでリダイレクトされます。
Location: https://frontends/app.
ここでの「frontends」は、nginx の設定におけるアップストリームの名前です。奇妙ですね。
[1]: nginx がギア A だけで動作することの証明: 構成ファイル (投稿の最後に pastebin リンクがあります) の 20 行目をコメント アウトし、21 行目をコメント解除すると、すべて正常に動作し、「Hello world!」が表示されます。ただし、20 行目のようなケースでは (ギア B ではなくギア A の DNS アドレスであっても)、
解決策を試しました:
私はこれに半日を費やし、これを設定するのに疲れました。前述の serverfault の投稿で示されている解決策を試し、場所ブロックを次のように置き換えました。
位置 / { proxy_pass http://frontends; proxy_set_header ホスト $host; proxy_redirect http://frontends http://$host:$server_port/; proxy_redirect http://frontends:8080/ http://$host:$server_port/; }
これにより、リダイレクト ループが発生します。/ への最初のリクエストから始まるサンプル ログ出力:
AAA.BBB.CCC.DDD - - [2013 年 12 月 22 日:14:53:53 -0500] "GET / HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML、Gecko など) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [2013 年 12 月 22 日:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [2013 年 12 月 22 日:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [2013 年 12 月 22 日:14:53:55 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ" AAA.BBB.CCC.DDD - - [2013 年 12 月 22 日:14:53:56 -0500] "GET /app HTTP/1.1" 302 331 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML、Gecko など) Chrome/26.0.1410.63 Safari/537.31" "WWW.XXX.YYY.ZZZ"
nginx で通常の負荷分散を実現する方法について何かアイデアはありますか?
nginx.conf へのリンク:http://pastebin.com/91CMftSc