在 EC2 (Jetbrains) 上配置 nginx 和 docker

Configuring nginx and docker on EC2 (Jetbrains)

出于评估目的,我在同一个 EC2 实例上设置了 Jetbrains Upsource 和 Teamcity。如果我将每个容器分别暴露在 80 端口上,我就可以从外部世界访问它。我想知道如何设置 nginx 以便我可以通过子域访问每个容器,例如。 "upsource.example.aws.com" 和 "teamcity.example.aws.com"。我将端口 8080 和 8111 上的容器暴露给主机。甚至有可能实现这一目标吗?如果是这样,我不知道如何开始。我阅读了通过公开静态上下文在一台机器上为节点 Web 应用程序托管多个域的方法。但我不知道如何让它与预配置的 docker 图像一起工作。

nginx 可以。你必须使用一个叫做 reverse proxy 的东西。 您可以在不同的端口中公开这两个容器,并在 nginx 配置的帮助下重定向到这些容器。

例如,如果你有一些容器 运行 在端口 8000 和 8001 在 127.0.0.1 你可以这样重定向:

    location /1 {
    proxy_pass http://127.0.0.1:8000;
}

   location /2 {
   proxy_pass http://127.0.0.1:8001;
}

更新答案

您需要有 3 个容器。 nginx 服务器应该在端口 80 中 运行。其他两个容器将在端口 8000(upsource.example.aws.com)和端口 8111(teamcity.example.aws.com 中托管站点).

使用如上所示的位置设置更新配置文件。确保 location / 转发到端口 8000,location /teamcity 转发到主机中的端口 8111。有关如何配置 nginx 的更多详细信息,请参阅 docker 中心。

工作 当您转到 blabla.com 时,nginx 服务器将它转发到端口 8000,当您转到 blabla.com/teamcity 时,它会转到端口 8111。