59

Ruby on Rails を使用してクライアント IP とサーバー IP を取得する方法を教えてください。

4

2 に答える 2

85

コントローラーから:

request.remote_ip

mongrel の前で apache を使用している場合、remote_ip はリクエストの送信元アドレスを返します。この場合は、Apache Web サーバーがリクエストを行っているため、ローカル ホストになります。代わりに、これをコントローラーに入れます。

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

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

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

于 2009-08-04T11:34:32.150 に答える
35

ありがとう: 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
于 2009-08-04T11:49:19.563 に答える