django-allauth: как изменить url-адрес подтверждения электронной почты?

Я запускаю django на порту 8001, в то время как nginx обрабатывает обязанности веб-сервера на порту 80. представления прокси nginx и некоторые вызовы REST api для Django. Я использую django-allauth для регистрации/аутентификации пользователей.

когда новый пользователь регистрируется, django-allauth отправляет пользователю электронное письмо со ссылкой для щелчка. Поскольку django работает на порту 8001, ссылка выглядит как http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

Как я могу сделать url похожим на http://www.example.com/accounts/confirm-email/xxxxxxxx ?

спасибо!

2 ответов


Django получить имя хоста и порт из заголовков HTTP. Добавить proxy_set_header Host $http_host; в вашу конфигурацию nginx перед options proxy_pass.


у меня была та же проблема, а также выяснилось, что решение ferrangb не повлияло на исходящие электронные письма allauth. ответ mr_tron получил меня на полпути, но мне пришлось сделать немного больше:

1) в конфигурации nginx поставьте

proxy_set_header Host $http_host

перед директива proxy_pass вариантов.

2) в settings.py, добавьте доменное имя в ALLOWED_HOSTS. Я также добавил версию www моего доменного имени, так как я получаю трафик на оба адреса.

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

и, конечно, перезагрузка nginx и gunicorn или что-то еще служит вашему Django. С первым шагом, но не вторым, все хиты на сайт были мгновенными ошибками 400 (если только DEBUG = True на settings.py.)