>  기사  >  백엔드 개발  >  역방향 프록시를 사용할 때 Django에서 실제 사용자 IP 주소를 얻는 방법은 무엇입니까?

역방향 프록시를 사용할 때 Django에서 실제 사용자 IP 주소를 얻는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-05 03:51:02650검색

How to Get the True User IP Address in Django When Using a Reverse Proxy?

Django에서 사용자 IP 주소를 검색하는 방법

Django 애플리케이션을 개발할 때 사용자의 IP 주소를 가져와야 하는 경우가 있습니다. 이는 현지화, 트래픽 분석 또는 보안 목적에 유용합니다.

일반적인 접근 방식 중 하나는 request.META['REMOTE_ADDR'] 속성을 사용하는 것입니다. 그러나 Django 애플리케이션이 역방향 프록시 뒤에 배포된 경우 REMOTE_ADDR 헤더에 사용자의 실제 IP 주소가 포함되지 않을 수 있습니다.

이 문제를 해결하기 위해 Django는 get_client_ip 도우미 기능을 제공합니다. 이 함수는 클라이언트의 원래 IP 주소를 나타내기 위해 역방향 프록시에서 일반적으로 사용되는 HTTP_X_FORWARDED_FOR 헤더를 확인합니다. 이 헤더가 있으면 함수는 목록의 첫 번째 IP 주소를 반환합니다. 그렇지 않으면 REMOTE_ADDR 헤더로 대체됩니다.

get_client_ip 함수를 사용하는 방법은 다음과 같습니다.

<code class="python">def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip</code>

get_client_ip 함수가 제대로 작동하려면 역방향 프록시가 올바르게 구성되었는지 확인하세요. 예를 들어, Apache의 경우 mod_rpaf 모듈을 설치해야 할 수도 있습니다.

get_client_ip 함수를 구현한 후에는 요청 개체를 인수로 전달하여 사용자의 IP 주소를 검색할 수 있습니다.

<code class="python">ip_address = get_client_ip(request)</code>

위 내용은 역방향 프록시를 사용할 때 Django에서 실제 사용자 IP 주소를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.