私はHaProxyでSSLを終了し、リクエストをワニスに戻して、キャッシュされたページまたはNginxからのリクエストを返します。しかし、ワニスはHaProxyからのリクエストをHTTP/1ではなくHTTP/2として扱い、サービスに失敗したようです。私はこの理由は、nginxのがないことであると述べて、このhereに関連する何かを見つけたプロキシプロトコル1を強制的に使用する
" while reading PROXY protocol, client: 127.0.0.1, server: 127.0.0.1:8181
2016/08/11 06:53:31 [error] 5682#0: *1 broken header: "GET/HTTP/1.1
Host: www.example.com
User-Agent: curl/7.50.2-DEV
Accept: */*
X-Forwarded-For: IP_Removed
Accept-Encoding: gzip
X-Varnish: 32777
:私はページをヒットしようとしたとき、私はnginxの中で見ることができます
は以下を記録しますv2 PROXY v1のみで動作します。ですから、私はHaProxyでsend-proxy-v2 switchではなくsend-proxyを使用してプロトコル1を使用するよう強制しました。しかし、それがニスになると、私はVarnishが何らかの方法でこれをプロトコル2に変換しているので、Nginxと正しく通信できなくなってしまったと思います。
私は式からワニスを除去し、HaProxyをNginxに直接接続し、HTTP/2で完全に動作します。問題は、ワニススタックで何かが起こっている可能性が高いと思われるが、ワニスが使用しているプロキシプロトコルv2である。
短いストーリーを短縮するために、ワニスをPROXY2プロトコルではなくPROXY1に強制するにはどうすればよいですか?私は起動デーモンのオプションにPROXY1を追加しようとしましたが、Varnishはそれを受け入れません。どんな助けもありがとうございます。ありがとう!
UPDATE - HaProxyバックエンドでsend-proxy-v2スイッチを使用してHaProxy> Nginxをテストしたところ、スタックにVarnishが導入されたときと同じ問題が発生しました。 HaProxyのsend-proxyに戻って問題を修正します。ですから、問題はプロトコル1ではなくプロトコル2を使用していると確信しています。
を設定することで、nginxのにPROXYプロトコルバージョン1を送信することができますが、あなたがHTTP/2話をしていますか?これはPROXY v2プロトコルとは関係ありません。ワニスはHTTP/2を話さず、ワニス5.xが導入される予定です。 –
多分私は自分自身を混乱させているかもしれませんが、HaProxyはHTTP/2を扱うときにHTTPではないTCPとして動作するので、バックエンドでsend-proxyを使う必要があります。 Nginxはproxy_protocolスイッチでこれを受け取るように設定されています。私はワニスがHTTP/2ではないことを理解していますかSSLをしていますが、プロトコルをNginx noに戻す必要がありますか? – d1ch0t0my