Para configurar o Traefik para servir a aplicação Novo SGA em um subpath como https://exemplo.tld/novosga, você precisa garantir que tanto o Traefik quanto a aplicação estejam configurados corretamente. Aqui estão alguns passos e considerações:
Configuração do Traefik
Rotas com Traefik:
Você precisa configurar Traefik para rotear as solicitações para o subpath correto usando PathPrefix. Além disso, use o middleware StripPrefix para remover o prefixo antes de enviar a solicitação à aplicação:
yaml
version: '3'
services:
traefik:
image: traefik:v2.9
command:
- --api.insecure=true
- --providers.docker=true
- --entrypoints.web.address=:80
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
novosga:
image: novosga/novosga:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.novosga.rule=PathPrefix(`/novosga`)"
- "traefik.http.routers.novosga.entrypoints=web"
- "traefik.http.middlewares.novosga-stripprefix.stripprefix.prefixes=/novosga"
- "traefik.http.routers.novosga.middlewares=novosga-stripprefix"
Este exemplo assume que você está usando Traefik v2.9 e que seu container do Novo SGA está configurado para ouvir na porta 80 dentro do container.
Assets e URLs Relativas:
O problema com os assets não carregando geralmente ocorre porque a aplicação espera que os recursos (CSS, JS, imagens, etc.) estejam no caminho raiz, mas eles devem ser solicitados no subpath quando servidos por Traefik.
Configuração da Aplicação (Novo SGA)
Configurar URLs Base:
O Novo SGA precisa saber que está sendo servido em um subpath. Dependendo da versão e da configuração do Novo SGA, você pode precisar ajustar algumas configurações:
URL Base: Verifique se existe uma opção para definir uma URL base no arquivo de configuração do Novo SGA. Isso pode ser algo como BASE_URL=/novosga no seu arquivo de configuração ou variável de ambiente.
Alterar Links e Rotas: Se a aplicação usa URLs absolutas, você terá que ajustar essas para que sejam relativas ao subpath ou configurar a aplicação para usar o subpath em todas as URLs internas.
Por exemplo, no Docker Compose, você poderia fazer algo assim:
`novosga:
image: novosga/novosga:latest
environment:
- APP_BASE_URL=/novosga
labels:
- "traefik.enable=true"
...restante das labels`
Revisar Documentação do Novo SGA:
Verifique a documentação oficial do Novo SGA para ver se há suporte nativo para ser hospedado em subpaths ou se há instruções específicas para essa configuração.
Testes e Troubleshooting
Logs: Verifique os logs do Traefik e do Novo SGA para entender onde as solicitações estão falhando.
Request Debugging: Use ferramentas como o browser's developer tools para entender como as solicitações estão sendo feitas e quais são os caminhos que o navegador está tentando acessar.
Testar Caminhos Diretos: Tente acessar diretamente alguns dos assets (ex: https://exemplo.tld/novosga/css/styles.css) para ver se eles estão sendo servidos corretamente.
Se após esses ajustes a aplicação ainda não funcionar corretamente em um subpath, pode ser necessário consultar a documentação específica do Novo SGA ou até mesmo modificar o código da aplicação para suportar subpaths corretamente.