
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
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:
- example.com:3000 aplicativo react [frontend] =>http://exemplo.com
- exemplo.com:5601 aplicativo kibana =>http://kibana.exemplo.com
- exemplo.com:5050 aplicativo postgadmin =>http://postgadmin.example.com
- example.com/radius php applicatinn [backend] =>http://example.com/radius
- exemplo.com:8080 aplicativo phpmyadmin =>http://phpmyadmin.example.com
Eu tentei algumas coisas, mas nada está funcionando. na rota 53
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:
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.