Pular para o conteúdo

Proxy inverso e URL base

Configuração

Coloca o HolyArrs num endereço como https://home.example/holyarrs, atrás do teu proxy inverso.

Um proxy inverso é o servidor web à frente das tuas apps que envia cada endereço para o contentor certo. O URL base é o caminho sob o qual o HolyArrs vive.

  1. Junta o caminho ao teu ficheiro Compose:

    services:
    holyarrs:
    environment:
    - HOLYARRS_URL_BASE=/holyarrs
  2. Reinicia o contentor.

  3. Junta uma regra de proxy de Exemplos de proxy.

  4. Abre https://home.example/holyarrs/. Deves ver a página de início de sessão. Settings > This app (Definições > Esta app) mostra o caminho em uso.

Onde Quando entra em vigor
HOLYARRS_URL_BASE No arranque. Tem prioridade sobre os outros.
Opção -url-base /holyarrs No arranque, quando a variável não está definida.
Settings > This app No arranque seguinte, só quando a variável e a opção não estão definidas.

nginx-proxy-manager. Cria um proxy host para o teu domínio e depois junta uma localização personalizada:

  • Localização: /holyarrs
  • Nome do host de destino holyarrs, porta 6262. Sem barra no fim, senão o caminho é retirado.
  • Na caixa da roda dentada dessa localização:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_read_timeout 1h;

Traefik. Não juntes um middleware StripPrefix.

labels:
- traefik.enable=true
- traefik.http.routers.holyarrs.rule=Host(`home.example`) && PathPrefix(`/holyarrs`)
- traefik.http.services.holyarrs.loadbalancer.server.port=6262

Caddy. Usa handle. O handle_path retira o caminho.

home.example {
handle /holyarrs* {
reverse_proxy holyarrs:6262 {
flush_interval -1
}
}
}

Nomes de host e endereços de proxy

Ligação para Nomes de host e endereços de proxy
  • Se as pessoas chegam ao HolyArrs por um nome de host, junta-o a HOLYARRS_ALLOWED_HOSTS.
  • Se o proxy junta X-Forwarded-For, junta o endereço do proxy a HOLYARRS_TRUSTED_PROXIES. Sem isso, o início de sessão não sabe quem está na tua rede de casa.
Sintoma Causa Solução
Todas as páginas dizem que não foram encontradas O proxy retira o caminho Retira a definição que remove o caminho ou a barra no fim.
As atualizações em direto nunca chegam O proxy guarda as respostas em buffer Desativa o buffering (proxy_buffering off, flush_interval -1).
Um caminho guardado deixou-te de fora O caminho guardado está errado Arranca com HOLYARRS_URL_BASE=/ para o ignorar.
O início de sessão trata-te como estando fora da tua rede O proxy não é de confiança Envia X-Real-IP e X-Forwarded-For, e define HOLYARRS_TRUSTED_PROXIES.

Mais soluções: Resolução de problemas.

Regras do caminho
  • Carateres permitidos: letras, dígitos, -, _, . e /. Sem .. nem //.
  • holyarrs, /holyarrs e /holyarrs/ querem todos dizer /holyarrs.
  • Um caminho guardado que não seja válido é ignorado.
  • Tudo passa para debaixo do caminho: páginas, a API, atualizações em direto, início de sessão e as ligações que o HolyArrs constrói (ligações de convite, o feed do calendário).
  • /healthz e /readyz respondem também na raiz, para que a verificação de saúde da própria imagem continue a funcionar.
  • Qualquer outro endereço fora do caminho responde que não foi encontrado.
O que o proxy tem de fazer
Necessidade Porquê
Passar o caminho sem o alterar O HolyArrs encaminha pelo caminho completo.
Manter o cabeçalho Host As verificações de host e as ligações construídas usam-no.
Sem buffering das respostas As atualizações em direto chegam por uma única resposta aberta.
Tempo limite de leitura longo (1 h) O fluxo de atualizações em direto fica aberto.

O HolyArrs é gratuito. Se te poupou tempo, dá-lhe uma estrela no GitHub, patrocina-o ou oferece-me um café.