Skip to content

Commit d02e08d

Browse files
daniviganastasi-oq
authored andcommitted
Take IP from HTTP_X_REAL_IP when behind a proxy
1 parent b3af4b7 commit d02e08d

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

request/middleware.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.utils.deprecation import MiddlewareMixin
55

66
from . import settings
7+
from .utils import get_ip_address
78
from .models import Request
89
from .router import Patterns
910
from .utils import request_is_ajax
@@ -26,7 +27,7 @@ def process_response(self, request, response):
2627
if request_is_ajax(request) and settings.IGNORE_AJAX:
2728
return response
2829

29-
if request.META.get('REMOTE_ADDR') in settings.IGNORE_IP:
30+
if get_ip_address(request) in settings.IGNORE_IP:
3031
return response
3132

3233
ignore = Patterns(False, *settings.IGNORE_USER_AGENTS)

request/models.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from . import settings as request_settings
1010
from .managers import RequestManager
11-
from .utils import HTTP_STATUS_CODES, browsers, engines, request_is_ajax
11+
from .utils import HTTP_STATUS_CODES, browsers, engines, request_is_ajax, get_ip_address
1212

1313
AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
1414

@@ -59,7 +59,7 @@ def from_http_request(self, request, response=None, commit=True):
5959
self.is_ajax = request_is_ajax(request)
6060

6161
# User information.
62-
self.ip = request.META.get('REMOTE_ADDR', '')
62+
self.ip = get_ip_address(request)
6363
self.referer = request.META.get('HTTP_REFERER', '')[:255]
6464
self.user_agent = request.META.get('HTTP_USER_AGENT', '')[:255]
6565
self.language = request.META.get('HTTP_ACCEPT_LANGUAGE', '')[:255]

request/utils.py

+4
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,7 @@ def handle_naive_datetime(value):
182182
if settings.USE_TZ and timezone.is_naive(value):
183183
return timezone.make_aware(value)
184184
return value
185+
186+
def get_ip_address(request):
187+
return request.META.get(
188+
'HTTP_X_REAL_IP', request.META.get('REMOTE_ADDR', '127.0.0.1'))

0 commit comments

Comments
 (0)