13

しばらくの間、spdy モジュールでコンパイルされた nginx を使用しており、仕様のドラフト 2 であるにもかかわらず、そのパフォーマンスに非常に満足しています。

ただし、現在は水平方向にスケーリングする必要があり、EC2 インスタンスを Elastic Load Balancer の背後に置いています。

ELB は NPN プロトコルをサポートしていないため、リスナーを次のように設定しました。

SSL 443 -> SSL 443

ここで説明するように、新しいプロキシ プロトコルも有効にしました。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html

この構成では、すべてが完全に正常に機能します。私たちのアプリは、インスタンス間で正常に負荷分散されています。

ただし、http: //spdycheck.org/ を実行すると、SPDY が有効になっていないことが報告されます。それでも、spdycheck を単一インスタンスのエラスティック IP にポイントすると、SPDY が有効であると正しく報告されます。

どんな助けでも大歓迎です。

4

2 に答える 2

8

SSL -> SSL を実行しても、TCP パケット全体が Web サーバーに送信されません。AWS は、証明書を使用してパケットを復号化し、再暗号化します。バックエンドは変更されたパケットのみを受信します。実行可能なオプションは、プロトコルを TCP に変更することですが、http ヘッダー用のnginx プロキシ パッチが必要になるか、より適切に動作するようになります。

私も同じ問題を抱えており、AWS が ELB で NPN ネゴシエーションを有効にするか、nginx がそのモジュールに accept-proxy パッチを追加するのを待っています。

于 2013-12-11T13:27:37.887 に答える
6

昨夜、https://www.ritani.comでリリースしました。spdy と proxy_protocol をサポートするバージョンの nginx が必要です。1.6.2 を使用しています。

AWS CLI を使用して、proxy_protocol を ELB に追加してアタッチします。 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html#enable-proxy-protocol-cli

その ELB の AWS Web UI を使用して、443 リスナーをすべて削除します。TCP 443 -> TCP 443 として新しいリスナーを追加します。

nginx 構成サーバー ブロックで:

listen 443 ssl spdy proxy_protocol;

add_header Alternate-Protocol 443:npn-spdy/3;

all the standard ssl directives...

ocsp stapling を機能させるには、3 つの証明書を使用する必要がありました。my.crt と my.intermediate.crt を連結する標準的な方法は機能しませんでした。次のようにそれらを分解する必要がありました。

ssl_certificate /etc/nginx/ssl/my.crt;

ssl_certificate_key /etc/nginx/ssl/my.private.key;

ssl_trusted_certificate /etc/nginx/ssl/my.intermediate.crt;

最後に、 のインスタンスを$remote_addrと交換します$proxy_protocol_addr。$remote_addr は elb になり、$proxy_protocol_addr はリモート クライアントの IP になります。

于 2015-01-29T20:46:59.790 に答える