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

时间:2015-07-31 16:34:30

标签: angularjs api docker haproxy

这是我的情景: 我有一台aws ec2机器(coreOs) 我已经托管了多个API - 所有都在docker容器中 3.我有HA代理侦听另一个侦听某个端口的端口(例如999)并负载均衡多个API。完美的工作...... 我有另一个ngnix容器,它容纳我的角度站点。这显然会侦听端口80.假设它已映射到http://pagladasu.com

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

问题是 - 两者都需要收听端口80 - 那么如何实现?

1 个答案:

答案 0 :(得分:2)

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

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;
    }
}

将此Nginx容器链接到两个角度容器。 Docker会为您修改/etc/hosts,以便您可以按名称引用它们。在这种情况下,我假设它们的名称类似于one-pagladasu-com,但当然它可以是任何东西。

现在流程是Requests => Nginx虚拟主机容器=>角度容器=> HAProxy =>的API。