如何在一个 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.com
、two.pagladasu.com
的每个子域(one.pagladasu.com
、two.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。
这是我的场景: 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.com
、two.pagladasu.com
的每个子域(one.pagladasu.com
、two.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。