web-dev-qa-db-ja.com

Railsを使用してクライアントIPとサーバーIPを取得する方法

Ruby on Railsを使用してクライアントIPとサーバーIPを取得する方法を誰でも助けていただけますか?

ありがとう:karim79とTitanous。

コントローラーでコードを書く

クライアントIPの場合

request.remote_ip

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

サーバーIPの場合:

require 'socket'

def local_ip
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true  # turn off reverse DNS resolution temporarily

  UDPSocket.open do |s|
    s.connect '64.233.187.99', 1
    s.addr.last
  end
ensure
  Socket.do_not_reverse_lookup = orig
end

コントローラーから:

request.remote_ip

Mongrelの前でApacheを使用している場合、remote_ipはリクエストの送信元アドレスを返します。この場合、Apache Webサーバーがリクエストを作成しているため、ローカルホストになります。

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

サーバーIPを取得するには、以下を参照してください。

Ruby on Rails)でホスト名またはIPを取得

85
karim79