Как мне обслуживать Kinto через https из контейнера докера?

Как написано в документации Kinto, я могу указать пользовательскую конфигурацию следующим образом:

docker run --env-file ./kinto.env -p 8888:8888 kinto/kinto-server,

Кроме того, кажется, я могу предложить схему http, используя http_scheme имущество.

Теперь, если я:

  1. Положил KINTO_HTTP_SCHEME=https в kinto.env файл;
  2. Запустите Kinto с помощью приведенной выше команды и;
  3. Перейдите на 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.

Вот указатели на соответствующую документацию:

Например, с единорогом это будет выглядеть так:

[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,

Другие вопросы по тегам