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



下面是我的场景:1. 我有一台aws ec2机器(coreOs)2. 我在其中托管了多个api——都在docker容器中3.我让HA代理侦听侦听某些端口(例如999)的另一个端口,并对多个api进行负载平衡。效果很好……4. 我有另一个nnix容器来承载我的angular站点。这显然侦听端口80。假设它被映射到http://pagladasu.com

我想创建http://one.pagladasu.com和http://two.pagladasu.com等等。并且希望每个都指向docker容器中不同的angular应用。

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

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

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容器到两个angular容器。Docker将为您修改/etc/hosts,以便您可以通过名称引用它们。在本例中,我假设它们的名称为one-pagladasu-com,但当然它可以是任何名称。

现在流程是Requests => Nginx virtual hosts container => Angular container => HAProxy => api

最新更新