Sto eseguendo un'applicazione Django temporanea su un host che ha molti indirizzi IP. Quando si utilizza manage.py runserver 0.0.0.0:5000
, in che modo il codice può vedere quale dei molti indirizzi IP della macchina è quello effettivamente colpito dalla richiesta, se ciò è possibile?Django runserver associato a 0.0.0.0, come posso ottenere quale IP ha preso la richiesta?
O, per dirla in altro modo:
Il mio ospite ha indirizzi IP 10.0.0.1
e 10.0.0.2
. Quando runserver è in ascolto su 0.0.0.0
, come può la mia applicazione sapere se l'utente ha colpito http://10.0.0.1/app/path/etc
o http://10.0.0.2/app/path/etc
?
Capisco che se lo stavo facendo con Apache potrei usare le variabili di ambiente Apache come SERVER_ADDR
, ma non sto usando Apache.
Qualche idea?
EDIT
Maggiori informazioni:
sto testando un bilanciatore di carico con un piccolo Django app. Questa app è in ascolto su un numero di IP diversi e ho bisogno di sapere quale indirizzo IP viene colpito per una richiesta proveniente dal servizio di bilanciamento del carico, così posso assicurarmi che sia in equilibrio correttamente.
Non riesco a utilizzare le opzioni request.get_host()
o request.META
, poiché restituiscono ciò che l'utente ha digitato per eseguire il bilanciamento del carico.
Ad esempio: l'utente preme http://10.10.10.10/foo
e che inoltrerà la richiesta a uno o http://10.0.0.1/foo
http://10.0.0.2/foo
- ma request.get_host()
tornerà 10.10.10.10
, non gli IP reale del server è in ascolto.
Grazie, Ben
Perché non collegarlo solo a un ip specifico? 'python manage.py runserver 10.0.0.1 (2): 5000' –
Penso che cosa @Ben sta cercando di dire è come il server rileva quale IP è stato colpito con una richiesta? –
Sì @GamesBrainiac, è esattamente ciò che intendo :) – Ben