2010-12-22 16 views
11

Tengo un servidor web configurado con gunicorn y nginx y django.Django get IP only returns 127.0.0.1

Yo soy el acceso a él de forma remota, y con esto: testIP def (petición): direccion_ip = utils.get_ip (petición)

cada vez me siento una dirección IP 127.0.0.1 Como ya he dicho que soy acceder a él de forma remota y, por lo tanto, no debería dar una dirección local.

Creo que podría tener algo que ver con gunicornio, pero quiero comprobar aquí primero para ver si tienen alguna idea.

+0

¿Cómo está conectando nginx a gunicorn? –

Respuesta

24

¿Cómo funciona get_ip()?

Si nginx es un proxy inverso y gunicorn es el servidor de aplicaciones, siempre recibe solicitudes de nginx en la máquina local.

La IP real que nginx envía al servidor de aplicación es en mi caso HTTP_X_REAL_IP a través de la línea de nginx conf proxy_set_header X-Real-IP $remote_addr;

así que sería bueno para establecer eso, y en su cuenta de aplicación Django para los diferentes cabecera, ya sea usando su nuevo encabezado IP o establecer request.META['REMOTE_ADDR'] = request.META['HTTP_X_REAL_IP']

+0

Gracias. Eso lo hizo! – DantheMan

+0

¡Hola, felicitaciones! ;) –

+1

@DantheMan: Una idea diferente (quizás mejor) es usar el middleware de proxy inverso: http://docs.djangoproject.com/en/dev/ref/middleware/#reverse-proxy-middleware – Wolph

Cuestiones relacionadas