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