Como configurar porta para subdomínio na AWS?

Como configurar porta para subdomínio na AWS?

Tenho um domínio (por exemplo, example.com) registrado em godaddy.com e uso AWS para hospedagem. Servidor de nomes no Godaddy adicionado posteriormente à AWS

insira a descrição da imagem aqui

Eu tenho um servidor Apache Ubuntu (t2.medium) instalado. Meu projeto no Docker possui LAMP, ELK, Node, React e Postgres instalados. Tudo funciona no sistema local usando portas diretas. Poucas portas abertas no meu projeto, ou seja

  • example.com:3000 aplicativo react [frontend]
  • exemplo.com:5601 aplicativo kibana
  • example.com:5050 aplicativo postgadmin
  • exemplo.com/radius aplicativo php [backend]
  • exemplo.com:8080 aplicativo phpmyadmin

meus URLs desejados são:

Eu tentei algumas coisas, mas nada está funcionando. na rota 53 insira a descrição da imagem aqui

tentei proxy reverso no apache adicionando arquivos conf separados, por exemplo

padrão.conf

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

kibana.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>

quando executo o docker-compose up no EC2,http://example.com/radiusfunciona bem. mas outros não (por exemplohttp://kibana.exemplo.com). mas se tentar diretamente com a porta (por exemplo, example.com:5601), está funcionando. mas quero usar um subdomínio, não um domínio com porta.

Como fazer isso?

proxy reverso tentei conforme mencionado na descrição mas não está funcionando corretamente

Responder1

Encontrou a solução, comente por favor se esta abordagem estiver errada.

Adicionados meus subdomínios no AWS route53:

aws-route53

No arquivo docker-compose.yml, adicionadotraefike adicionei minhas outras imagens na mesma rede (t2_proxy)

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

Nesta configuração, $DOCKER_IMAGE_TRAEFIK é o nome da imagem traefik do meu arquivo .env. Você pode adicionar o nome da sua imagem e $DOCKER_TRAEFIK_HOST_PROXY é o nome do host, por exemplo, proxy.example.com

para configuração de porta:

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

Nesta configuração, $DOCKER_IMAGE_PHPMYADMIN é o nome da imagem phpmyadmin e $PHPMYADMIN_PORT é 7865 do meu arquivo .env. Você pode alterar como quiser. $DOCKER_TRAEFIK_HOST_PHPMYADMIN é o nome do host, por exemplo, phpmyadmin.example.com

Neste exemplo. Bloqueei o acesso à porta e consigo acessar o subdomínio corretamente. a mesma configuração para LAMP, ELK, Node e React em meu projeto.

informação relacionada