HTTP к HTTPS со ссылкой на здоровье на Elasti c Beanstalk с использованием Django - PullRequest
4 голосов
/ 14 января 2020

Я пытаюсь перенаправить Http в Https в Django, развернутом на AWS Beanstalk. Http to Https работает нормально, когда я удаляю ссылку здоровья из балансировщика нагрузки. при наличии ссылки в балансировщике нагрузки приложение перестает работать.

Я использую следующую конфигурацию в файле настроек в проекте Django, размещенном на Aws Beanstalk.

CORS_REPLACE_HTTPS_REFERER = True
HOST_SCHEME = "https://"
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True

Ответы [ 2 ]

2 голосов
/ 14 января 2020

При SECURE_SSL_REDIRECT = True все незащищенные запросы будут перенаправлены на https. Незащищенные запросы - запросы выполняются через http и с несоответствующими SECURE_PROXY_SSL_HEADER.

Даже если ваш балансировщик нагрузки сам выполняет перенаправление с http на https - хорошо, если эта опция включена в django и проще (все опции безопасности включены).


AWS Проверка работоспособности ALB не может устанавливать пользовательские заголовки. Мы можем исключить запросы на определенные конечные точки от перенаправления на https с помощью SECURE_REDIRECT_EXEMPT - [r'^health/$'].


AWS Запросы проверки работоспособности ALB выполняются для экземпляра ip. Чтобы разрешить django обрабатывать их - ip необходимо добавить в ALLOWED_HOSTS : ["172.16.2.5", "my.example.com"]. Это должен быть частный ip экземпляра, который будет использоваться ALB для его достижения.

Это можно сделать с помощью:


AWS ALB не может добавить заголовки HSTS. Если вы хотите использовать заголовки Strict Transport Security - их следует добавить на стороне приложения django. Это можно сделать с помощью параметра SECURE_HSTS_SECONDS , отличного от нуля.

Заголовки HSTS добавляются только в ответах на защищенные запросы (https:// или SECURE_PROXY_SSL_HEADER match).

0 голосов
/ 15 января 2020
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True

Это работало для меня в прошлом.

...