使用网络服务和Docker通过HTTP提供多个站点

时间:2018-05-24 10:38:47

标签: docker nginx https

首先,这是学习和分享新信息的好地方。

现在我遇到了在同一台服务器上托管两个网站的问题,但在描述我的问题之前,我将使用一些术语来使事情变得更容易。

网站设置

  • 服务器操作系统 - CentOS 7 x64,Docker版本 - 18.03.0-ce,build 0520e24
  • 第一个网站:example.com - 通过Nginx托管(在主机上作为服务运行,在端口80上运行通过Docker Container)(重定向到443):带有HTML / CSS代码的静态网站。
  • 第二个网站http://art.example.com:8080/:通过 this Docker Image
  • 在端口8080上投放
  • SSL - 对上述两个域使用LetsEncrypt。

要求

  • 通过HTTP服务这两个站点(可能更多),而不会破坏其中任何一个站点。
  • 这是因为当我使用art.example.com:8080浏览第二个网站时,它运行正常,但是如果我浏览第一个网站,那么后续对第二个网站的请求会以某种方式开始使用HTTP,导致页面无法加载。

问题

  • 可以通过Nginx VHosts(或任何其他替代方案)通过端口 80 | 443 提供两个站点(以及更多),而无需使用其他端口,即: 8080 第二个网站?这是因为上面提到的URL中没有任何端口,只有域名。

  • 或者,有没有办法在主要主要Web服务侦听端口 80 | 443 时将流量转发到其他端口上的Docker服务?我需要做什么配置更改?

我尽可能地在这个论坛上搜索但是得不到多少。

如果我需要更多信息,请告诉我。

提前致谢!

1 个答案:

答案 0 :(得分:0)

解决方案:根据此Docker image维护者的建议 - kdelfour以及BretFisher的快速推荐,我们可以重新制作 1st网站作为Docker容器,如第二个网站,然后使用Traefik作为反向代理来管理SSL

进行负载均衡

将此标记为已解决,直到找到更好的解决方案,欢呼!