Я искал вокруг и нашел темы, близкие к этому (например, здесь и здесь ), но я все еще не могу заставить это работать, вот и все.
Я использую игру 2.6 и развертывание в Heroku.Я хотел бы заставить приложение использовать только HTTPS.Как указывалось в вышеупомянутом посте , этот фильтр (с правильными настройками Heoku), похоже, должен решить мою проблему.Но я не могу заставить его работать.В основном, если я делаю простую настройку, которую я предлагаю ниже, она не перенаправляет на https, и если я пытаюсь сделать что-то необычное, я получаю ошибки.
Я думаю, что я спрашиваю, как настроить приложение Procfile.Переменные conf и Environment для развертывания в Heroku.Как FYI я использую / я хотел бы иметь возможность использовать самозаверяющие сертификаты play для моих непроизводственных развертываний на случай, если это вызовет проблемы.
===== ДляProcfile ====
Обычно простой Procfile может выглядеть так:
web: target/universal/stage/bin/my-app -Dhttp.port=${PORT}
Но без heroku я бы хотел сделать что-то подобное (см. здесь )
play -Dhttp.port=disabled -Dhttps.port=443
Поскольку Heroku автоматически настраивает порт / HTTPS, как мне объединить эти два?т. е. есть ли в качестве героев env var вроде ${HTTPS_PORT}
, который я должен использовать?
===== Для application.conf ====
Предположительно, мы хотим что-то вроде этого
play.filters.enabled += play.filters.https.RedirectHttpsFilter
play.filters.https.redirectEnabled = true
"play.filters.https.redirectEnabled = true" не нужно, но я поставил его на всякий случай.Но мне также нужно указать play.filters.https.port?(см. здесь ).Примерно так:
play.filters.enabled += play.filters.https.RedirectHttpsFilter
play.filters.https.redirectEnabled = true
play.filters.https.port=???
Заранее спасибо.
==== Редактировать ===
Спасибо @codefinger за правильные ответы, которые вы дали.Я собираюсь поместить детали ниже для дальнейшего использования.
Как уже упоминалось здесь , вам нужно указать play, чтобы проверить, был ли запрос уже защищен.В данном случае это, по сути, означает белый список прокси.Таким образом, файл Proc может быть простым:
web: target/universal/stage/bin/my-app -Dhttp.port=${PORT}
Но вам нужно включить RedirectHttpsFilter и настроить доверенные прокси.Обратите внимание, что я доверял всем IP-адресам, но в зависимости от вашего приложения вы можете ограничить это (подробности здесь ).
play.filters.enabled += play.filters.https.RedirectHttpsFilter
play.http.forwarded.trustedProxies=["0.0.0.0/0", "::/0"]