¿Cómo configurar el puerto al subdominio en AWS?

¿Cómo configurar el puerto al subdominio en AWS?

Tengo un dominio (por ejemplo, ejemplo.com) registrado en godaddy.com y uso AWS para alojamiento. El servidor de nombres en Godaddy se agregó posteriormente a AWS

ingrese la descripción de la imagen aquí

Tengo instalado un servidor apache ubuntu (t2.medium). Mi proyecto en Docker tiene instalados LAMP, ELK, Node, React y Postgres. Todo funciona en el sistema local utilizando puertos directos. Pocos puertos abiertos en mi proyecto, es decir

  • ejemplo.com: aplicación de reacción 3000 [interfaz]
  • ejemplo.com: aplicación kibana 5601
  • ejemplo.com: aplicación de posgrado 5050
  • ejemplo.com/radius aplicación php [backend]
  • ejemplo.com: aplicación 8080 phpmyadmin

mis URL deseadas son:

He probado algunas cosas pero nada funciona. en la ruta 53 ingrese la descripción de la imagen aquí

Probé el proxy inverso en Apache agregando archivos de configuración separados, por ejemplo

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

cuando ejecuto docker-compose up en EC2,http://ejemplo.com/radiusfunciona bien. pero otros no (por ejemplohttp://kibana.ejemplo.com). pero si lo intenta directamente con el puerto (por ejemplo, ejemplo.com:5601), funciona. pero quiero usar un subdominio, no un dominio con puerto.

¿Como hacer eso?

Proxy inverso. Lo intenté como se menciona en la descripción pero no funciona correctamente.

Respuesta1

Encontré la solución, comente por favor si este enfoque es incorrecto.

Agregué mis subdominios en AWS route53:

aws-ruta53

En el archivo docker-compose.yml, agregadotraefiky agregué mis otras imágenes en la misma red (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

En esta configuración, $DOCKER_IMAGE_TRAEFIK es el nombre de la imagen traefik de mi archivo .env. Puede agregar el nombre de su imagen y $DOCKER_TRAEFIK_HOST_PROXY es el nombre del host, por ejemplo, proxy.example.com

para la configuración del puerto:

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

En esta configuración, $DOCKER_IMAGE_PHPMYADMIN es el nombre de la imagen de phpmyadmin y $PHPMYADMIN_PORT es 7865 de mi archivo .env. Puedes cambiar como quieras. $DOCKER_TRAEFIK_HOST_PHPMYADMIN es el nombre del host, por ejemplo, phpmyadmin.example.com

En este ejemplo. He bloqueado el acceso al puerto y puedo acceder al subdominio correctamente. la misma configuración para LAMP, ELK, Node y React en mi proyecto.

información relacionada