如何通过https从docker容器中为Kinto提供服务?

时间:2016-03-31 12:05:16

标签: https docker kinto

正如Kinto文档中所述,我可以specify a custom configuration这样:

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

此外,我似乎可以suggest an http scheme使用http_scheme属性。

现在,如果我:

  1. KINTO_HTTP_SCHEME=https放入kinto.env文件;
  2. 通过上面的命令运行Kinto,并且;
  3. 转到https://example.com:8888/v1/;
  4. 我得到一个空白页。

    其他信息

    如果我导航到http://example.com:8888/v1/,我会在页面上标记通常的JSON配置。此JSON还包含url属性 这是https://example.com:8888/v1/(而不是http://example.com:8888/v1/),所以似乎正在发生一些事情:读取.env文件。该链接是可点击的,但如果我点击它仍然会得到一个空白页。

    这是一个错误吗?我该如何解决这个问题?

    备注

    这很重要,因为如果通过https投放该网页,Chrome将不允许我投放http内容。它完全阻止了请求,在控制台中显示了相应的错误: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.

    Kinto说:Fetch API cannot load http://example.com:8888/v1/. Failed to start. Error: HTTP 0; TypeError: Failed to fetch(…)

2 个答案:

答案 0 :(得分:2)

这取决于你如何经营Kinto。 pserve默认使用女服务器服务器,该服务器没有任何HTTPS支持。

通过在.ini文件中指定替代服务器,可以将替代服务器用作替换(例如gunicorn或uwsgi)作为pserve的替代。

以下是正确文档的指示:

例如,对于独角兽,它看起来像这样:

[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://kinto.readthedocs.org/en/latest/configuration/production.html?highlight = uwsgi#running-with-uwsgi

希望有所帮助。

或者,您可以使用NGINX或haproxy为您执行SSL终止。

答案 1 :(得分:0)

从未使用过Kinto,但来自documentation

  

环境变量与设置完全相同,但它们>是资本化的。被_。

取代      

例如,如果已定义,则从环境变量KINTO_STORAGE_BACKEND中读取kinto.storage_backend。

因此,您要在kinto.env文件中设置的environment variableKINTO_HTTP_SCHEME,而不是HTTP_SCHEME