django-allauth:如何修改电子邮件确认网址?

时间:2014-06-09 20:26:59

标签: python django email nginx django-allauth

我在端口8001上运行django,而nginx正在处理端口80上的webserver任务.nginx代理视图和一些REST api调用Django。我使用django-allauth进行用户注册/身份验证。

当新用户注册时,django-allauth会向用户发送一封包含点击链接的电子邮件。由于django在端口8001上运行,因此链接看起来像http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

如何让网址看起来像http://www.example.com/accounts/confirm-email/xxxxxxxx

谢谢!

2 个答案:

答案 0 :(得分:6)

Django从HTTP头获取主机名和端口。 在选项proxy_set_header Host $http_host;之前,将proxy_pass添加到您的nginx配置中。

答案 1 :(得分:1)

我遇到了同样的问题,并且发现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除外。)