django-allauth:如何修改邮件确认链接?
我在8001端口上运行Django,而nginx在80端口上处理网页服务。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 个回答
2
我也遇到了同样的问题,发现 ferrangb 的解决方案对发出的 allauth 邮件没有效果。mr_tron 的回答让我走了一半的路,但我还需要做一点额外的工作:
1) 在 nginx 的配置文件中,在 options proxy_pass 之前添加
proxy_set_header Host $http_host
。
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
)。
7
Django 从 HTTP 头部获取主机名和端口。
在你的 nginx 配置中,在 proxy_pass
选项之前添加 proxy_set_header Host $http_host;
。