2014-06-09 18 views
6

Sto eseguendo django sulla porta 8001, mentre nginx sta gestendo le funzioni del server Web sulla porta 80. Visualizzazioni di nginx proxy e alcune chiamate di API REST a Django. Sto usando django-allauth per la registrazione/autenticazione dell'utente.django-allauth: come modificare l'url di conferma email?

Quando un nuovo utente si registra, django-allauth invia all'utente un'email con un collegamento per fare clic. Poiché django è in esecuzione sulla porta 8001, il collegamento sembra http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

Come posso rendere l'URL come http://www.example.com/accounts/confirm-email/xxxxxxxx?

Grazie!

risposta

5

Django ottiene nome host e porta da intestazioni HTTP. Aggiungi proxy_set_header Host $http_host; nella configurazione di nginx prima delle opzioni proxy_pass.

+0

Grazie; proverò questo quando avrò una possibilità successiva. –

+0

Confermato - grazie Tron –

1

Ho avuto lo stesso problema e ho anche scoperto che la soluzione di ferrangb non aveva alcun effetto sulle e-mail in uscita. La risposta di mr_tron mi ha fatto a metà strada, ma ho dovuto fare un po 'di più:

1) Nella configurazione nginx, mettere

proxy_set_header Host $http_host 

prima di opzioni proxy_pass.

2) In settings.py, aggiungere il nome di dominio a ALLOWED_HOSTS. Ho anche aggiunto la versione www del mio nome di dominio, dal momento che ottengo il traffico verso entrambi gli indirizzi.

ALLOWED_HOSTS = ['127.0.0.1', 'example.com', 'www.example.com'] 

E, naturalmente, riavviare nginx e gunicorn o qualsiasi altra cosa serva il tuo Django. Con il primo passaggio, ma non il secondo, tutti gli accessi al sito sono stati 400 errori (a meno che non fosse DEBUG = True in settings.py)

Problemi correlati