2009-08-04 16 views

答えて

35

ありがとう:karim79とタイタス。サーバーの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 
+0

サーバのIPは何ですか?それはクライアントサーバーですか? –

+0

要求オブジェクトはどこに定義されていますか? – user938363

+2

リクエストオブジェクトは、実行時(ブラウザ要求が行われたとき)にコントローラアクションメソッドにRailsによって提供されます。 – thekingoftruth

84

request.remote_ip 

あなたが雑種の前にApacheを使用している場合は、REMOTE_IPが、この場合、Apache Webサーバため、ローカルホストされる、リクエストの送信元アドレスを返します。要求を行っているので、代わりにあなたのコントローラでこれを置く:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"] 

をサーバーのIPが表示さ取得するには:

Getting the Hostname or IP in Ruby on Rails

+0

が、私はまた、両方のクライアントIpとサーバーが必要IP together –

+0

あなたのサーバが要求をrailsサーバに代理しているからです。元のリクエストのIPも送信するようにフロントサーバー(Apacheなど)を設定する必要があります。あなたはあなたが持っている設定についての詳細を教えてくれますか? –

+0

ありがとう、グッドジョブのバディは働いています –

関連する問題