当前版本的api平台和我找到的docker-compose / traefik-1配置示例对我来说不起作用。
我想出了一个配置工作,做我想要的:所有服务都没有转发端口,traefik后面的服务使用HTTP,traefik使用HTTPS,服务的主机名:
- https://client.api-platform-new.loc
- https://admin.api-platform-new.loc
- https://vulcain.api-platform-new.loc
到目前为止,一切顺利,但还有一个问题,管理容器将一个正确的请求发送到
https://vulcain.api-platform-new.loc
在我的设置中,但是第二个
HTTP://vulcain.api-platform-new.loc:443/docs.jsonld
这似乎是因为https://vulcain.api-platform-new.loc-Request的“链接”请求报头说:
link: <http://vulcain.api-platform-new.loc:443/docs.jsonld>; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"
(mind HTTP与HTTPS)
导致“出现问题”的原因是:
fetchJsonLd.ts:14 Mixed Content: The page at 'https://admin.api-platform-new.loc/#/' was loaded over HTTPS, but requested an insecure resource 'http://vulcain.api-platform-new.loc:443/docs.jsonld'. This request has been blocked; the content must be served over HTTPS.
我花了几天的时间在这上面,如果有人能告诉我,如何修复响应头链接以使用httpS,我会非常高兴!
1条答案
按热度按时间km0tfn4u1#
我今天遇到了同样的问题。我使用Traefik作为我的主网关服务器(与Docker)和我有一个API平台安装与API背后的一个Vulcain Docker图像。似乎端口443是转发在头部,但proto是HTTP,这导致了问题中描述的错误。我无法正确配置多层容器,这样SSL就能一直被正确检测到。我的解决方案是编辑前端PHP控制器,使其不信任转发的端口和proto。
在
public/index.php
中:此外,您可以指定一个名为
HTTPS
的环境变量,Symfony将使用它来为生成的URL设置正确的方案。只需在您的.env
文件中放入以下代码:就是这样,你的Symfony生成的URL将正确地使用HTTPS方案。我知道正确的方法应该是配置容器转发正确的端口和proto,但这是最简单的方法。
希望有帮助。