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
.)