簡體   English   中英

通過域名在EC2上轉發Docker端口?

[英]Docker port forwarding on EC2 by domain name?

我有 2 個 dockers 容器在我的 EC2 實例上運行:

  1. Docker1:運行 PHP 服務器的 Wordpress 網站映射到 EC2 實例的端口 8081。
  2. Docker2:在運行 Angular 的門戶上創建,NGINX 映射到 EC2 實例的端口 8082。

我想在同一個端口 80 上為我的域和子域 xyz.com 和 portal.xyz.com 使用相同的 EC2 實例。

理想情況下,如果請求來自 xyz.com,它應該重定向到運行在 8081 上的 Docker1,如果它來自 portal.xyz.com,它應該重定向到運行在 8082 上的 Docker2。

是否可行,如果可行,如何? 我不想為此產生 2 個 EC2 實例,並且兩者都必須映射到端口 80 上的 HTTP。

使用多個負載均衡器和目標組可以解決您的問題。 https://aws.amazon.com/about-aws/whats-new/2019/07/amazon-ecs-services-now-support-multiple-load-balancer-target-groups/

您可以將兩個負載均衡器設置為偵聽 HTTP,並將您的一個 ECS 實例定位到不同的端口。 之后,在 Route53 中設置路由將是直接的。

我在 VPS 服務器上做過類似的事情,從技術上講,它也應該適用於 ec2 實例。

  1. 我創建了一個新的 docker 網絡 'proxy-network'(注意:你可以不創建網絡,只代理到 localhost:8081 和 localhost:8082。這更干凈)
  2. 使用適當的名稱(例如:wordpress、angular)啟動該網絡中的所有應用程序服務器。 在運行命令中使用 --name 或在 docker-compose 中使用 conatiner_name。
  3. 啟動一個新的 nginx 服務器映射主機端口 80 和 443(如果您需要 https 才能工作)。 我使用了 nginx:latest image。 創建一個新的 default.conf 並替換容器中的 /etc/nginx/conf.d/default.conf 。

示例 proxy.conf 應該是這樣的:

server {
  listen        80;
  server_name   domain1.com www.domain1.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass  http://wordpress;
  }
}
server {
  listen        80 default_server;
  server_name   domain2.com www.domain2.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass  http://angular;
  }
}

一旦您更新域注冊商中的別名記錄,它就像一個魅力。 希望能幫助到你。 祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM