2014-06-09 77 views
6

我在端口8001上運行django,而nginx正在處理端口80上的web服務器職責。nginx代理視圖和一些REST API調用到Django。我正在使用django-allauth進行用戶註冊/身份驗證。django-allauth:如何修改電子郵件確認網址?

當新用戶註冊時,django-allauth向用戶發送帶有鏈接的電子郵件以進行點擊。由於django運行在端口8001上,鏈接看起來像http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

如何使url看起來像http://www.example.com/accounts/confirm-email/xxxxxxxx

謝謝!

回答

5

Django從HTTP標頭獲取主機名和端口。 在選項proxy_pass之前將proxy_set_header Host $http_host;添加到您的nginx配置中。

+0

謝謝;下次我有機會的時候會試試這個。 –

+0

確認 - 謝謝Tron –

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 = Truesettings.py。)