3

私はたくさん検索しましたが、解決策を見つけることができませんでした。私は試した:

Rails.logger.error request.remote_ip
Rails.logger.error request.env["REMOTE_ADDR"]

しかし、結果は何か変です:10.130.150.254または10.130.150.251.

携帯電話の LTE/4G ネットワークを使用してテストしたところ10.130.247.251、クラス A の予約済みプライベート ネットワーク IP アドレスである が常に返されました。

私も試しました:

Rails.logger.error request.env["HTTP_X_FORWARDED_FOR"]
Rails.logger.error request.env["HTTP_X_REAL_IP"]
Rails.logger.error request.env["HTTP_X_CLUSTER_CLIENT_IP"]

しかし、それらは私に空の文字列を与えました。

携帯電話を使用して touch.whatsmyip.org をポイントする172.56.9.89と、パブリック IP アドレスである: が表示されます。

HTTPS SSL ターミネーションとロード バランサーを使用します。おそらく、「Get Remote Host Client IP Behind Load Balancers (ELB)」のようになります。

クライアントの IP アドレスを取得するにはどうすればよいですか? クライアントがプロキシの背後にある場合は問題ありません。プロキシの IP アドレスも適切です。

アプリケーションを提供するために Apache と Passenger を使用しています。

request.remote_ip」も同様の問題です。

4

2 に答える 2

5

IT がロード バランサーでそれを渡すように構成していなかったことが判明しました。構成が完了すると、機能します。両方ともrequest.env["HTTP_X_FORWARDED_FOR"]動作しrequest.remote_ipます。

于 2013-10-29T21:40:20.570 に答える
-1

これが役立つことを願っています

env['action_dispatch.remote_ip'].calculate_ip

于 2014-04-16T16:46:02.297 に答える