2009-08-04 3 views

답변

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 
+0

서버 ip 란 무엇입니까? 클라이언트 서버입니까? –

+0

요청 개체는 어디에 정의되어 있습니까? – user938363

+2

요청 객체는 런타임 중에 (브라우저 요청이있을 때) 컨트롤러 조치 메소드에 대한 Rails에 의해 제공됩니다. – thekingoftruth

84

:

request.remote_ip 

당신이 잡종 앞에 아파치를 사용하는 경우, 다음 remote_ip이 경우 로컬 호스트 될 것입니다 요청의 소스 주소를 반환 아파치 웹 서버 때문에 요청을하는, 그래서 대신 컨트롤러에 넣고 :

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"] 

를 서버 IP 참조 얻으려면 :

Getting the Hostname or IP in Ruby on Rails

+0

그러나 나는 또한 모두 클라이언트 IP와 서버가 필요 IP together –

+0

서버가 레일즈 서버에 요청을 프록시하고 있기 때문입니다. 원래 요청의 IP도 보내려면 프론트 서버 (아파치 또는 기타 포함)를 설정해야합니다. 보유하고있는 구성에 대해 더 자세히 설명해 주시겠습니까? –

+0

감사합니다. 좋은 직장 동료입니다. –

관련 문제