DEV Community

Edimar Cardoso for Quave

Posted on

2

Configurando Caddy: Arquivos Estáticos e Autenticação Básica atrás de um Load Balancer

O Caddy server tem se mostrado um projeto muito promissor. Além de ser rápido, tem muitas funcionalidades "built-in" que facilitam muito a configuração. Um dos exemplos é a emissão automática de certificados SSL. Além disso, é muito fácil configurar um serviço utilizando ele.

Esta semana, precisei criar um serviço para publicar arquivos estáticos. Ao tentar fazer isto com a configuração padrão dele, notei que não seria possível usar a configuração padrão por ter um cenário um pouco diferente.

No meu cenário, o serviço iria rodar atrás de um load balancer na zCloud que já é responsável por gerar os certificados e fazer a terminação do TLS/SSL. A configuração padrão gerou problemas pois não deveria gerar certificado SSL, apenas servir os arquivos na porta HTTP padrão.

Além disso, havia outra particularidade: precisava de um endpoint de health check com acesso público, enquanto todo o restante precisava ser bloqueado utilizando autenticação padrão "Basic Auth".

A seguir, o arquivo utilizado para fazer isto de uma forma bem simples:

{
  auto_https off
}
:8080 {
    route /_health* {
        respond 200
    }
    route {
        basic_auth / {
            USER_NAME HASH_PASSWORD
        }
        root * /var/www/static
        file_server
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicando um pouco sobre a configuração:

Desabilitando SSL

auto_https off
Enter fullscreen mode Exit fullscreen mode

Desabilita a emissão automática de certificado e desabilita o redirecionamento para HTTPS.

Porta

:8080 {
# ...
Enter fullscreen mode Exit fullscreen mode

Porta que será aberta para receber conexões.

Health check

    route /_health* {
        respond 200
    }
Enter fullscreen mode Exit fullscreen mode

Rota para acesso ao health check com acesso público.

Arquivos estáticos com autenticação

    route {
        basic_auth / {
            USER_NAME HASH_PASSWORD
        }
        root * /var/www/static
        file_server
    }
Enter fullscreen mode Exit fullscreen mode

Esta parte da configuração irá receber todo restante das requests, interceptar as requisições e forçar um login, caso o usuário não esteja logado, e servir os arquivos do diretório /var/www/static.

O valor USER_NAME é o nome do usuário que será usado para autenticar.
O valor HASH_PASSWORD é o hash gerado pelo CLI do Caddy com base na senha definida. Para gerar este valor, basta seguir as instruções na documentação oficial basic_auth.

Conclusão

Esta configuração do Caddy Server oferece uma solução elegante para servir arquivos estáticos com autenticação, ao mesmo tempo que permite um endpoint de health check público. A flexibilidade e simplicidade do Caddy tornam-no uma excelente escolha para diversos cenários de deploy.

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more