http jetty上的https反向代理

我在http上有一个docker应用程序。 我的虚拟主机在https上运行一个反向代理,它代理我的docker应用程序(http)。

浏览第一页( https://example.com/index.html )的作品,但是当我点击一个链接,它回落到http。 ( http://example.com/link.html ,而不是https://example.com/link.html )

如何解决这个问题? 是apache上的configuration问题(应该重写url),还是在jetty中configuration(我应该在jetty中configuration“canonical url”)?

其实我不能改变在Apache的configuration(因为只有我的虚拟主机提供商有权访问它),所以我希望这个问题可以在docker上解决。 怎么做? 注意:我的docker需要在http(而不是https)上运行,正如我的虚拟主机提供商所定义的。

尝试将以下内容添加到Jetty应用程序中的HTTP连接器:

<Set name="forwarded">true</Set> 

这将尝试读取应该由代理发送的以下标题:

  • X-Forwarded-For – 客户端的IP地址
  • X-Forwarded-Host – 主机HTTP请求标头中客户端请求的原始主机
  • X-Forwarded-Server – 代理服务器的主机名
  • X-Forwarded-Proto – 原始请求的URL协议scheme

如果Apache不发送这些头文件,而你的主机不能发送这些头文件,那么你可能需要编写一个自定义的连接头文件,你可以在这里阅读更多。