如何在一个 ip 地址中托管多个 dockerized 网站(nginx)?

How to host multiple dockerized websites (ngnix) in one ip address?

这是我的场景: 1. 我有一台 aws ec2 机器 (coreOs) 2. 我在其中托管了多个 API - 全部在 docker 个容器中 3. 我有 HA 代理侦听另一个端口,该端口侦听特定端口(比如 999)并负载平衡多个 API。完美运行... 4. 我有另一个 ngnix 容器来托管我的 angular 站点。这显然监听端口 80。假设它映射到 http://pagladasu.com

我想要的是创建http://one.pagladasu.com and http://two.pagladasu.com等等。并希望每个指向 docker 容器中的不同 angular 应用程序。

问题是 - 两者都需要监听端口 80 - 那么如何完成呢?

创建一个监听 80 端口并运行 Nginx 的容器。使用 one.pagladasu.comtwo.pagladasu.com 的每个子域(one.pagladasu.comtwo.pagladasu.com)为 Nginx 配置虚拟主机,使用 proxy_pass 将连接发送到上游 angular 容器。像这样:

server {
    listen 80;
    server_name one.pagladasu.com;

    location / {
        proxy_pass http://one-pagladasu-com;
    }
}
server {
    listen 80;
    server_name two.pagladasu.com;

    location / {
        proxy_pass http://two-pagladasu-com;
    }
}

Link 这个 Nginx 容器到两个 angular 容器。 Docker 将为您修改 /etc/hosts 以便您可以按名称引用它们。在这种情况下,我假设它们被命名为 one-pagladasu-com 但当然它可以是任何东西。

现在流程是请求 => Nginx 虚拟主机容器 => Angular 容器 => HAProxy => API。