Bij het uitrollen van een Django applicatie met Gunicorn als WSGI server, klopt de request.META[“REMOTE_IP”] waarde vaak niet. Deze toont dan het IP van de reverse proxy, of is zelfs leeg. We kunnen dit oplossen met een klein stukje middleware:
# app/middleware.py
class XForwardedForMiddleware(MiddlewareMixin):
def process_request(self, request):
if 'HTTP_X_FORWARDED_FOR' in request.META:
request.META['REMOTE_ADDR'] = request.META['HTTP_X_FORWARDED_FOR'].split(",")[0].strip()
return None
Vervolgens kunnen we deze middleware inschakelen door ‘app.middleware.XForwardedForMiddleware’ aan onze middleware toe te voegen in settings.py