복붙노트

[PYTHON] Tornado 요청의 클라이언트 IP는 어떻게 얻습니까?

PYTHON

Tornado 요청의 클라이언트 IP는 어떻게 얻습니까?

들어오는 post ()에 대한 RequestHandler 객체가 있습니다. 요청하는 클라이언트의 IP를 어떻게 찾을 수 있습니까? 나는 RequestHandler의 메소드와 프로퍼티의 대부분을 찾아보고 뭔가를 놓친 것처럼 보인다.

해결법

  1. ==============================

    1.RequestHandler.request.remote_ip (RequestHandler의 인스턴스에서 가져옴)

    RequestHandler.request.remote_ip (RequestHandler의 인스턴스에서 가져옴)

    다음과 같이 응답을 검사 할 수 있습니다.

    ...
    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write(repr(self.request))
    ...
    
  2. ==============================

    2.mykhal의 대답은 맞습니다. 그러나 때때로 nginx와 UWSGI를 사용하고 원격 IP에 대해 항상 127.0.0.1과 같은 것을 얻을 수있는 경우, 애플리케이션이 프록시 뒤에있을 수 있습니다. 이 경우 다음과 같이 헤더도 확인해야합니다.

    mykhal의 대답은 맞습니다. 그러나 때때로 nginx와 UWSGI를 사용하고 원격 IP에 대해 항상 127.0.0.1과 같은 것을 얻을 수있는 경우, 애플리케이션이 프록시 뒤에있을 수 있습니다. 이 경우 다음과 같이 헤더도 확인해야합니다.

    x_real_ip = self.request.headers.get("X-Real-IP")
    remote_ip = x_real_ip or self.request.remote_ip
    
  3. from https://stackoverflow.com/questions/3110919/how-do-i-get-the-client-ip-of-a-tornado-request by cc-by-sa and MIT license