1

我有一个 GCE(谷歌计算引擎)服务器,运行在端口 80 的 Nginx/Apache 网络服务器列表,它将为网站提供服务。同时,我有多个微服务与 Docker 容器在同一台服务器上运行。每个容器都将在其适当的本地 IP 地址处为网站提供服务,并且我已将其绑定到 localhost:PORT。我不想将端口绑定到公共 IP 地址,因为它会将微服务公开暴露给外界。

现在的问题是,我必须将容器提供的网站页面嵌入到在 Web 服务器的端口 80 上运行的网站中。由于嵌入代码是由浏览器执行的,因此我不能在 python/HTML 代码中使用本地 IP (172.17.0.x) 或 localhost:PORT。

现在如何将容器内本地运行的微服务页面嵌入到为用户服务的网站中?

例如:

我的服务器的公共 IP:104.145.178.114 该网站的服务来自:104.145.178.114 :80 在同一台服务器中,我们有多个微服务在本地 IP 中运行,例如172.17.0.1172.17.0.2等等。每个容器都将在其内部运行一个服务器,该服务器将在172.17.0.1:8080/test.html处为页面提供服务,其他容器也类似。现在我需要将此页面 test.html 嵌入到另一个网页,该网页由 Nginx/Apache 网络服务器在104.145.178.114 提供服务,而不向公众公开内部/本地 IP 端口。

我想听听这个问题的建议和替代解决方案

4

1 回答 1

1

我假设 Nginx 可以访问所有内部 docker ips(微服务)。除非我遗漏了什么,否则 proxy_pass ( http://nginx.org/en/docs/http/ngx_http_proxy_module.html ) 应该适合你。您可以假设某个(外部可用的)url 模式来代理您的微服务容器,而不会将微服务端口暴露给世界。

于 2015-04-07T19:02:04.203 回答