AWS でサブドメインへのポートを設定するにはどうすればいいですか?

AWS でサブドメインへのポートを設定するにはどうすればいいですか?

私はドメイン(例:example.com)をgodaddy.comに登録しており、ホスティングにはAWSを使用しています。Godaddyのネームサーバーは後にAWSに追加されました。

ここに画像の説明を入力してください

Ubuntu (t2.medium) Apacheサーバーをインストールしています。Dockerのプロジェクトには、LAMP、ELK、Node、React、Postgresがインストールされています。すべては直接ポートを使用してローカルシステムで動作します。私のプロジェクトではいくつかのポートが開いています。

  • example.com:3000 react アプリ [フロントエンド]
  • example.com:5601 キバナアプリ
  • example.com:5050 postgadmin アプリ
  • example.com/radius php アプリケーション [バックエンド]
  • example.com:8080 phpmyadmin アプリ

希望する URL は次のとおりです。

いくつか試してみましたが、何も機能しません。route53 ここに画像の説明を入力してください

別々のconfファイルを追加してApacheでリバースプロキシを試しました。

デフォルト.conf

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

キバナ.conf

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正常に動作します。しかし、他のものは動作しません(例:キバナ)。ただし、ポートを直接指定すると(例:example.com:5601)、動作します。ただし、ポート付きのドメインではなく、サブドメインを使用したいと思います。

どうやってするか?

説明に記載されているようにリバースプロキシを試しましたが、正常に動作しません

答え1

解決策を見つけました。この方法が間違っている場合はコメントしてください。

AWS route53 にサブドメインを追加しました:

AWS ルート53

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 に同じ設定を適用しています。

関連情報