Как мне обслуживать Kinto через https из контейнера докера?
Как написано в документации Kinto, я могу указать пользовательскую конфигурацию следующим образом:
docker run --env-file ./kinto.env -p 8888:8888 kinto/kinto-server
,
Кроме того, кажется, я могу предложить схему http, используя http_scheme
имущество.
Теперь, если я:
- Положил
KINTO_HTTP_SCHEME=https
вkinto.env
файл; - Запустите Kinto с помощью приведенной выше команды и;
- Перейдите на https://example.com:8888/v1/;
Я получаю пустую страницу.
Дополнительная информация
Если я вместо этого перейду на http://example.com:8888/v1/, я получу обычную конфигурацию JSON с печатью на странице. Этот JSON также содержит url
свойство https://example.com:8888/v1/ (а не http://example.com:8888/v1/), так что, похоже, что-то происходит: .env
Файл прочитан. Ссылка кликабельна, но если я нажму на нее, я все равно получу пустую страницу.
Это ошибка? Как это исправить?
Заметки
Это важно, потому что Chrome не позволяет мне предоставлять http-контент, если страница обслуживается через https. Он полностью блокирует запрос, показывая соответствующую ошибку в консоли: d Content: The page at 'https://example.com/' was loaded over HTTPS, but requested an insecure resource 'http://example.com:8888/v1/'. This request has been blocked; the content must be served over HTTPS.
Кинто говорит: Fetch API cannot load http://example.com:8888/v1/. Failed to start.
Error: HTTP 0; TypeError: Failed to fetch(…)
2 ответа
Это зависит от того, как вы управляете Kinto. pserve
по умолчанию использует официантский сервер, который не поддерживает HTTPS.
Альтернативные серверы могут использоваться в качестве замены (например, gunicorn или uwsgi) в качестве замены для pserve, указав его в файле.ini.
Вот указатели на соответствующую документацию:
- gunicorn: http://docs.gunicorn.org/en/latest/settings.html?highlight=ssl
- uwsgi: http://uwsgi-docs.readthedocs.org/en/latest/HTTPS.html
Например, с единорогом это будет выглядеть так:
[server:main]
use = egg:gunicorn
host = 0.0.0.0
port = 5900
workers = 1
worker_class = gevent
А затем настройте gevent для выполнения SSL:
certfile=~/ssl/server.crt
keyfile=~/ssl/server.key
ssl_version=3
Для uwsgi у вас есть конфигурация по умолчанию в документации, см. Http://http: //kinto.readthedocs.org/en/latest/configuration/production.html? Highlight = uwsgi # running-with-uwsgi
Надеюсь, это поможет.
Или вы можете использовать NGINX или haproxy, чтобы выполнить SSL-терминацию для вас.
Никогда не использовал Kinto, но из документации:
Переменные среды точно такие же, как настройки, но они> и с заглавной буквы. заменены на _.
Например, kinto.storage_backend читается из переменной среды KINTO_STORAGE_BACKEND, если она определена.
Итак, переменная окружения, которую вы хотите установить в своем kinto.env
файл KINTO_HTTP_SCHEME
, скорее, чем HTTP_SCHEME
,