Как развернуть сайт, поддерживающий только HTTPS, с помощью Django / nginx?

Мой первоначальный вопрос заключался в том, как включить HTTPS для страницы входа в Django , и единственный ответ, рекомендуемый мне - сделать весь сайт доступным только для HTTPS .

Учитывая, что я использую Django 1.3 и nginx, как правильно сделать сайт доступным только для HTTPS?

В одном из ответов упоминалось промежуточное программное обеспечение , но с оговоркой:

Django не может выполнить перенаправление SSL при сохранении данных POST. Пожалуйста, структурируйте свои представления так, чтобы перенаправлялись происходят только во время GET.

Вопрос о сбое сервера о перезаписи nginx на https , также упоминались проблемы с потерей данных POST, и я недостаточно знаком с nginx, чтобы определить, насколько хорошо работает решение.

И рекомендация EFF перейти только на HTTPS , отмечает, что:

Приложение должно установить атрибут Secure для файла cookie, когда устанавливает его. Этот атрибут указывает браузеру отправлять cookie только по безопасному (HTTPS) транспорту, а не по незащищенному (HTTP).

Есть ли в таких приложениях, как Django-auth, возможность устанавливать файлы cookie как безопасные? Или мне нужно написать больше промежуточного программного обеспечения?

Итак, как лучше всего настроить комбинацию Django / nginx для реализации только HTTPS с точки зрения:

  • безопасности
  • сохранения данных POST
  • файлы cookie обрабатываются правильно
  • , взаимодействие с другими приложениями Django (такими как Django-auth), работает правильно
  • любые другие проблемы, о которых я не знаю :)

Изменить - еще одна проблема, которую я только что обнаружил, при тестировании нескольких браузеров. Скажем, у меня есть URL https://mysite.com/search/ , на котором есть форма / кнопка поиска. Я нажимаю кнопку, обрабатываю форму в Django как обычно и выполняю Django HttpResponseRedirect на http://mysite.com/search?results= "foo" . Nginx перенаправляет его на https://mysite.com/search?results= "foo" , если необходимо.

Однако - Opera имеет видимую вспышку , когда происходит перенаправление. И это происходит при каждом поиске, даже для одного и того же поискового запроса (я предполагаю, что https действительно не кеширует :) Хуже того, когда я тестирую его в IE, я сначала получаю сообщение:

Вы собираетесь перенаправить на соединение это небезопасно - продолжить?

После нажатия «да» сразу же следует:

Вы собираетесь просматривать страницы через безопасное соединение - продолжить?

Хотя второе предупреждение IE имеет возможность выключите его - первое предупреждение не отображается, поэтому каждый раз, когда кто-то выполняет поиск и перенаправляется на страницу результатов, он получает по крайней мере одно предупреждающее сообщение.

38
задан Community 23 May 2017 в 11:54
поделиться