2014-06-09 10 views
6
Używam django na porcie 8001, podczas gdy nginx obsługuje obowiązki serwera WWW na portach 80. widoki proxy nginx i niektóre wywołania REST api do Django. Używam django-allauth do rejestracji użytkownika/uwierzytelniania.

django-allauth: jak zmodyfikować adres e-mail potwierdzający pocztę e-mail?

Kiedy nowy użytkownik się rejestruje, django-allauth wysyła użytkownikowi wiadomość e-mail z linkiem do kliknięcia. Ponieważ django działa na porcie 8001, odsyłacz wygląda tak: http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

Jak ustawić adres URL jako http://www.example.com/accounts/confirm-email/xxxxxxxx?

Dzięki!

Odpowiedz

5

Django pobiera nazwę hosta i port z nagłówków HTTP. Dodaj proxy_set_header Host $http_host; do konfiguracji nginx przed opcjami proxy_pass.

+0

Dzięki; spróbuję tego, gdy będę miał szansę następnej. –

+0

Potwierdzony - dziękuje Tron –

1

Miałem ten sam problem, a także stwierdziłem, że rozwiązanie Ferrangb nie miało wpływu na wysyłane wiadomości e-mail allauth. Odpowiedź mr_tron ma mnie w połowie drogi, ale musiałem zrobić trochę więcej:

1) w konfiguracji nginx, umieścić

proxy_set_header Host $http_host 

przed Opcje proxy_pass.

2) W polu settings.py dodaj nazwę domeny do ALLOWED_HOSTS. Dodałem również wersję www mojej nazwy domeny, ponieważ dostaję ruch na oba adresy.

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

I, oczywiście, zrestartuj nginx i gunicorn lub cokolwiek, co służy Twojemu Django. Z pierwszym krokiem, ale nie drugim, wszystkie trafienia do witryny były natychmiastowe 400 błędów (chyba, że ​​DEBUG = True w settings.py.)