Openshift редирект на HTTPS, используя колбу-базовый пример
Я пытаюсь запустить приложение на основе flask на бесплатной передаче на Openshift только по https. После этого - я добавил файл .htaccess
в корень моего РЕПО, но он, похоже, игнорируется, так как он не перенаправляет. В статье говорится о каталоге wsgi
, но у меня его нет, поэтому я не уверен в этом месте. Я создал приложение, используя Этот пример:
$cat .htaccess
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
3 ответа:
Мое понимание установки OpenShift заключается в том, что файл
.htaccess
может использоваться только в сочетании со статическими файлами, а не с динамической частью вашего приложения. Чтобы использовать стандартную установку Apache / mod_wsgi, вам придется использовать промежуточное ПО WSGI, которое обертывает приложение Flask для принудительного перенаправления.Единственная альтернатива, которую я могу предложить, заключается в том, что вы обходите стандартную установку Apache / mod_wsgi, которую они предоставляют, и вместо этого используете mod_wsgi-express, как описано выше in:
При использовании mod_wsgi-express я мог бы объяснить способ добавления дополнительного фрагмента конфигурации Apache для запуска перенаправления.
Обновление 1
FWIW, я понимаю, что это было бы возможно только для каталога 'wsgi / static' в старом стиле настройки OpenShift, потому что фактическое приложение WSGI было бы сопоставлено с директивой WSGIScriptAlias.
За исключением разрешений доступа к файловой системе, устанавливаемых в блоке каталогов в файле конфигурации Apache, никогда не было конкретного намерения в том, как WSGIScriptAlias работал в mod_wsgi для a .htaccess файл в каталоге, на который ссылается директива WSGIScriptAlias, с которым необходимо ознакомиться. Похоже, что это действительно возможно, по крайней мере, с Apache 2.X, не уверен насчет Apache 1.3, хотя, возможно, он работал и там.
Итак похоже, что люди OpenShift наткнулись на что-то, что возможно, что не задокументировано для mod_wsgi и что я, как человек, написавший mod_wsgi, даже не ожидал, что обязательно будет работать. Я собираюсь обдумать это сейчас, так как есть вещи, которые можно сделать в будущем .htaccess файл, который может испортить работу mod_wsgi. Это также может открыть некоторые странные возможности для того, что пользователи без доступа к основной конфигурации Apache могут сделать также, возможно, хорошо, но а может, и плохо.
Повторяя то, что я сказал в других комментариях, OpenShift поддерживает два различных способа настройки приложения WSGI. Более старый способ состоял в том, чтобы создать подкаталог под названием "wsgi" и в нем добавить файл "application", который будет файлом сценария WSGI. Также может существовать каталог "wsgi/static" для статических файлов. Более новый способ, который они документируют и теперь, кажется, рекомендуют, - это создать 'wsgi.py-файл в корневом каталоге проекта для файла сценария WSGI. Имя это может быть переопределено с помощью переменной окружения, заданной с помощью 'rhc set-env'.
Я не проверял, что они генерируют для конфигурации для более старого расположения, но они могли бы настроить конфигурацию Apache, чтобы разрешить переопределения Apache в подкаталоге 'wsgi', что означает, что a .файл htaccess может быть помещен туда. Это не было бы нормальной практикой, но, похоже, они нашли ее работающей и позволили бы определенные типы переопределений.
Если они сделали это для "wsgi" подкаталог, не похоже, что они сделали то же самое для корневого каталога, когда они переключились на предпочтение 'wsgi.py - в верхнем справочнике.
В любом случае, использование mod_wsgi-express, как я уже упоминал, вернет вам гораздо более высокий уровень контроля над настройками Apache и mod_wsgi. Предварительная консервированная конфигурация на самом деле не является гибкой, и некоторые предположения, сделанные для конфигурации, основанной на размере шестерни, не обязательно уместны, поскольку они не учитывают требования самого приложения, которые знал бы только пользователь.
, Как указано в OpenShift ответа Грэм Dumpleton поддерживает различные форматы приложение на Python. Если вы используете wsgi.py подойдите, сделайте следующее, чтобы перенаправить все запросы на https:
mkdir wsgi mv wsgi.py wsgi/application touch wsgi/.htaccess
Добавьте следующее содержание .htaccess файл:
RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]