#django #apache #gunicorn
#django #apache #gunicorn
Вопрос:
Я запускаю Django в gunicorn (запущен через systemd) за Apache:
<VirtualHost *:443>
...
<Location /relayrace/>
ProxyPass unix:/run/gunicorn-traverse.sock|http://127.0.0.1/
ProxyPassReverse unix:/run/gunicorn-traverse.sock|http://127.0.0.1/
</Location>
Но URL-адреса (например, электронная почта, созданная django-allauth) используют 127.0.0.1
, а не реальное полное доменное имя.
Как это исправить?
Ответ №1:
После установки USE_X_FORWARDED_HOST и SECURE_PROXY_SSL_HEADER это сработало:
settings.py:
USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
И мне нужно было сказать Apache, чтобы он предоставил перенаправленный протокол:
<Location /relayrace/>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
ProxyPass unix:/run/gunicorn-traverse.sock|http://127.0.0.1/
ProxyPassReverse unix:/run/gunicorn-traverse.sock|http://127.0.0.1/
</Location>
Я использовал config_view для отладки этого.