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 2

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. Предварительная консервированная конфигурация на самом деле не является гибкой, и некоторые предположения, сделанные для конфигурации, основанной на размере шестерни, не обязательно уместны, поскольку они не учитывают требования самого приложения, которые знал бы только пользователь.

The .файл htaccess должен находиться внутри вашей папки wsgi в вашем приложении python.

, Как указано в 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]