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

9
我正在使用Django在8001端口上运行,而Nginx则负责在80端口处理Web服务器职责。 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个回答

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

谢谢,下次有机会我会尝试这个。 - Colin Nichols

2
我曾经遇到过同样的问题,也发现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错误(除非在settings.py中将DEBUG设置为True)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接