如何在AWS中設定子網域的連接埠?

如何在AWS中設定子網域的連接埠?

我有一個在 godaddy.com 註冊的網域(例如 example.com)並使用 AWS 進行託管。 Godaddy 上的名稱伺服器後來加入 AWS

在此輸入影像描述

我安裝了 ubuntu (t2.medium) apache 伺服器。我在 Docker 中的專案安裝了 LAMP、ELK、Node、React 和 Postgres。一切都可以使用直接連接埠在本機系統上運行。我的專案中開啟的連接埠很少,即

  • example.com:3000 React 應用程式 [前端]
  • example.com:5601 kibana 應用程式
  • example.com:5050 postgadmin 應用程式
  • example.com/radius php 應用程式 [後端]
  • example.com:8080 phpmyadmin 應用程式

我想要的網址是:

我嘗試了一些方法,但沒有任何效果。在 53 號公路上 在此輸入影像描述

透過新增單獨的conf檔案在apache上嘗試反向代理,例如

預設設定檔

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html"
    ServerName example.com
    <Directory "/var/www/html/">
        AllowOverride all
    </Directory>
</VirtualHost>

基巴納設定檔

Listen 5601

<VirtualHost *:5601>
    ServerAdmin [email protected]
    ServerName kibana.example.com
</VirtualHost>

pgadmin.conf

Listen 5050

<VirtualHost *:5050>
    ServerAdmin [email protected]
    ServerName pgadmin.example.com
</VirtualHost>

當我在 EC2 上執行 docker-compose up 時,http://example.com/radius工作正常。但其他人則沒有(例如http://kibana.example.com)。但如果直接嘗試使用連接埠(例如 example.com:5601),它就可以工作。但我想使用子網域而不是帶有連接埠的網域。

怎麼做?

我按照描述中提到的方式嘗試了反向代理,但它無法正常工作

答案1

已找到解決方案,如果此方法錯誤,請評論。

在 AWS Route53 中新增了我的子網域:

AWS-route53

在 docker-compose.yml 檔案中,加入特拉菲克並在同一網路上添加了我的其他圖像(t2_代理

traefik:
  image: "traefik:v2.9"
  container_name: $DOCKER_IMAGE_TRAEFIK
  command:
    #- "--log.level=DEBUG"
    - "--api.insecure=true"
    - "--providers.docker=true"
    - "--providers.docker.exposedbydefault=false"
    - "--entrypoints.web.address=:80"
  ports:
    - "80:80"
    - "8080:8080"
  labels:
      - traefik.enable=true
      - traefik.http.routers.api.rule=Host(`$DOCKER_TRAEFIK_HOST_PROXY`)
      - traefik.http.routers.api.entrypoints=web
      - traefik.http.routers.api.service=api@internal
    #  - traefik.port=8080"
  volumes:
    - "/var/run/docker.sock:/var/run/docker.sock:ro"
  networks:
    - t2_proxy
    - postgreNetwork
    - elk

在此配置中,$DOCKER_IMAGE_TRAEFIK 是我的 .env 檔案中的 traefik 映像名稱。您可以新增您的圖片名稱,$DOCKER_TRAEFIK_HOST_PROXY 是主機名,例如 proxy.example.com

對於連接埠配置:

phpmyadmin:
  image: phpmyadmin:latest
  platform: linux/amd64
  container_name: $DOCKER_IMAGE_PHPMYADMIN
  links:
    - mysqldb
  networks:
    - t2_proxy
  environment:
    PMA_HOST: mysqldb
    PMA_PORT: ${MYSQL_PORT:-3306}
  # ports:
    # - "${PHPMYADMIN_PORT:-7865}:80"
  labels:
    - "traefik.enable=true"
    - "traefik.http.routers.phpmyadmin.rule=Host(`$DOCKER_TRAEFIK_HOST_PHPMYADMIN`)"
    - "traefik.http.routers.phpmyadmin.entrypoints=web"
    - "traefik.http.routers.phpmyadmin-rtr.tls=true"
    - "traefik.port=$PHPMYADMIN_PORT"
  volumes: 
    - /sessions

在此配置中,$DOCKER_IMAGE_PHPMYADMIN 是 phpmyadmin 映像名稱,$PHPMYADMIN_PORT 是我的 .env 檔案中的 7865。您可以根據需要進行更改。 $DOCKER_TRAEFIK_HOST_PHPMYADMIN 是主機名,例如 phpmyadmin.example.com

在這個例子中。我屏蔽了端口訪問,可以正常訪問子域。我的專案中的 LAMP、ELK、Node 和 React 設定相同。

相關內容