如何从docker容器通过https提供Kinto?

如何从docker容器通过https提供Kinto?,https,docker,kinto,Https,Docker,Kinto,正如Kinto文档中所述,我可以这样: docker run--env文件。/kinto.env-p 8888:8888 kinto/kinto服务器 另外,我似乎可以使用http\u方案属性 现在,如果我: 将KINTO_HTTP_SCHEME=https放入KINTO.env文件中 通过上面的命令运行Kinto,并 去 我得到一张空白页 附加信息 如果导航到,我会在页面上标记通常的JSON配置。此JSON还包含一个url属性 这是(也不是),所以似乎发生了一些事情:读取.env文件。链接是可

正如Kinto文档中所述,我可以这样:

docker run--env文件。/kinto.env-p 8888:8888 kinto/kinto服务器

另外,我似乎可以使用
http\u方案
属性

现在,如果我:

  • KINTO_HTTP_SCHEME=https
    放入
    KINTO.env
    文件中
  • 通过上面的命令运行Kinto,并
  • 我得到一张空白页

    附加信息 如果导航到,我会在页面上标记通常的JSON配置。此JSON还包含一个
    url
    属性 这是(也不是),所以似乎发生了一些事情:读取
    .env
    文件。链接是可点击的,但如果我点击它,我仍然会得到一个空白页面

    这是虫子吗?我该如何解决这个问题


    笔记 这很重要,因为如果页面是通过https提供的,Chrome将不允许我提供http内容。它完全阻止了请求,在控制台中显示了一个适当的错误:
    d Content:the page at'https://example.com/'已通过HTTPS加载,但请求了不安全的资源'http://example.com:8888/v1/'. 此请求已被阻止;内容必须通过HTTPS提供。

    Kinto说:
    fetchAPI无法加载http://example.com:8888/v1/. 启动失败。
    
    错误:HTTP 0;TypeError:无法获取(…)

    从未使用过Kinto,但从以下位置获取:

    环境变量与设置完全相同,但它们>已大写且为。替换为u

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


    因此,您想在
    kinto.env
    文件中设置的是
    kinto\u HTTP\u方案
    ,而不是
    HTTP\u方案
    ,这取决于您如何运行kinto
    pserve
    默认情况下使用Waitess服务器,该服务器不支持任何HTTPS

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

    以下是指向正确文档的指针:

    • 古尼康:
    • uwsgi:
    例如,对于麒麟,它看起来是这样的:

    [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,文档中有一个默认配置,seehttp://kinto.readthedocs.org/en/latest/configuration/production.html?highlight=uwsgi#running-与uwsgi

    希望有帮助


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

    我尝试过,我也尝试过设置
    KINTO\u变量
    变量
    ,但都是一样的。看起来他们都被考虑进去了。在这种情况下,它们都不起作用。我只是根据这个答案编辑了这个问题,以便不再有相同的答案。你能检查一下你的反向代理是否配置为支持https(证书设置等)吗?当我连接到服务器时,Chrome会显示绿锁,但我正在使用nodejs+express来服务我的资源。我想,也许很天真,Kinto可以自己处理HTTPS。在这方面,文件中没有写太多。无论如何,考虑到我只是一个人在处理整个应用程序,有没有什么方法可以让我开始在HTTPS上公开kinto而不需要太多的马匹?比如,现在,我只需要它尽快工作就可以开始原型设计。kinto(以及一般的服务器)不会立即为您提供SSL证书。它可以配置为通过TLS/HTTPS提供服务,但它不会提供证书本身。如果你想通过TLS访问你的服务,你应该配置你的反向代理为你做这件事:Kinto不负责为你做这件事。对于ExpressJS,我不使用任何反向代理。我只需要配置服务器来传递证书,就可以了。如果我理解正确的话,我不能用Kinto,我必须有一个反向代理。对吗?如果是这样的话,这将回答我的问题。我会调查的。告诉我这次我得到了它。你是说由
    kinto init
    命令生成的.ini文件?你能告诉我应该编辑哪些选项来更改服务器吗?另外,由于我的node.js已经在服务器上运行,我昨天从你和@NiKo在问题线程上的评论中获得了灵感,并制作了一个反向代理来监听,服务于Kinto运行的地方。现在我所要做的就是对外界隐藏不安全的Kinto,使其只与我的代理进行通信,这样所有用户都必须通过httpS进行连接。是否有一些Kinto(女服务员)设置可以用来实现这一点?请参阅变量
    Kinto.http_host
    Kinto.http_port
    ,它们应该可以解决您的问题!