Rails 3 でクライアント IP を取得しようとしています。アプリケーションは、SSL と nginx サーバーを使用してクラウド ホスティングにインストールされます。
クライアントIPを取得するコードをいくつか書きました。
request.remote_ip
request.env['HTTP_X_FORWARDED_FOR']
しかし、「10.159.21.86」のように間違ったアドレスが返されます。Nginx サーバーまたは SSL のインストールに関連する問題はありますか?
Rails 3 でクライアント IP を取得しようとしています。アプリケーションは、SSL と nginx サーバーを使用してクラウド ホスティングにインストールされます。
クライアントIPを取得するコードをいくつか書きました。
request.remote_ip
request.env['HTTP_X_FORWARDED_FOR']
しかし、「10.159.21.86」のように間違ったアドレスが返されます。Nginx サーバーまたは SSL のインストールに関連する問題はありますか?
HAProxy (マルチインスタンス環境のデフォルト構成) で SSL を使用している場合、HAProxy から Nginx へのハンドオフが原因で、リモート IP を取得できません。これを回避するために stunnel を使用するソリューションがありますが、すべての SSL 復号化は App Master インスタンスで行われるため、インスタンスが 5 つ以上ある場合はパフォーマンスが低下します。
もう 1 つのオプションは、HAProxy の代わりに Elastic Load Balancer を使用することです。そのドキュメントはhttps://support.cloud.engineyard.com/entries/21715452-Use-Elastic-Load-Balancing-with-Engine-Yard-Cloudにあります。
エヴァン
あなたが抱えている問題は、次の Engine Yard サポート リクエストで説明されているものと同じだと思います: HAProxy, SSL Requests & Request IP Addresses .
どうやら回避策があるようですが、それが何であるかを知るために直接彼らに連絡することになっています。
ドキュメント チームは正式なドキュメントの作成に取り組んでいます。短期的には、チケットを開いてください。サポート エンジニアがお手伝いします。