2014-06-09 3 views
6

nginx가 포트 80에서 웹 서버 작업을 처리하는 동안 django를 포트 8001에서 실행하고 있습니다. nginx 프록시보기와 Django에 대한 일부 REST API 호출이 있습니다. 사용자 등록/인증을 위해 django-allauth를 사용하고 있습니다.django-allauth : 확인 이메일을 수정하는 방법은 무엇입니까?

새 사용자가 등록되면 django-allauth는 사용자에게 클릭 링크 링크가 포함 된 이메일을 보냅니다. django가 포트 8001에서 실행 중이므로 http://machine-hostname:8001/accounts/confirm-email/xxxxxxxxxxxxxx

http://www.example.com/accounts/confirm-email/xxxxxxxx과 같은 URL을 어떻게 만들 수 있습니까?

감사합니다.

답변

5

Django는 HTTP 헤더에서 호스트 이름과 포트를 가져옵니다. proxy_pass 앞에 nginx 구성에 proxy_set_header Host $http_host;을 추가하십시오.

+0

감사합니다. 다음에 기회가 생길 때 이것을 시도 할 것입니다. –

+0

확인 됨 - 감사합니다 Tron –

1

나는 동일한 문제가 있었고, 또한 ferrangb의 해결책이 발신 allauth 이메일에 아무런 영향을 미치지 않는다는 것을 발견했다. mr_tron의 대답은 중간 저를 가지고,하지만 난 좀 더해야 할 일을했을 :

1)의 nginx 구성에서

proxy_set_header Host $http_host 

옵션 proxy_pass 전에

을 넣어.

2) settings.pyALLOWED_HOSTS에 도메인 이름을 추가하십시오. 나는 두 주소 모두로 트래픽을 얻었 기 때문에 내 도메인 이름의 www 버전도 추가했습니다.

ALLOWED_HOSTS = ['127.0.0.1', 'example.com', 'www.example.com'] 

그리고 당연히 nginx와 gunicorn 또는 장고를 제공하는 모든 것을 다시 시작하십시오. 두 번째가 아닌 첫 번째 단계에서는 settings.pyDEBUG = True (settings.py 제외)의 순간 오류가 발생했습니다.

관련 문제