Regras de edge
Redirecionamentos, headers de resposta e CORS, páginas de erro e manutenção, roteamento por caminho, certificados próprios, senhas, regras de IP, limites de taxa, bloqueio por país e um WAF.
Todo servidor roda um proxy web na frente das suas aplicações. As regras abaixo rodam ali, antes de a requisição chegar à sua aplicação. A maioria delas fica na aba Configurações → Rede da aplicação e passa a valer a partir do próximo deploy.
Você também pode configurá-las pela API (GET / PATCH /api/applications/:id/edge, que mescla as chaves enviadas) ou na seção edge: do railyard.yml.
Acesso: senha e regras de IP
O card Acesso faz três coisas:
- Senha. Coloca uma senha na aplicação, útil para stagings, previews e ferramentas administrativas.
- Regras de IP. Permita ou bloqueie um endereço ou faixa CIDR por linha. Todo o resto recebe
403. - Sem indexação. Os endereços padrão e de preview já informam aos mecanismos de busca para não indexá-los.
HTTPS
Todo endereço recebe um certificado, e uma visita por HTTP simples é redirecionada para HTTPS por padrão. Desative Redirecionar HTTP para HTTPS só para clientes que não conseguem seguir um redirecionamento, como dispositivos antigos ou verificadores de integridade — nesse caso a aplicação também passa a responder em HTTP simples. Vale a partir do próximo deploy.
Redirecionamentos e rewrites
Redirecionamentos e rewrites aceita uma regra por linha. As regras são verificadas em ordem, e a primeira que casar vence:
/blog/* https://blog.example.com/*{?query} 301
www.shop.example.com/promo /sale 302
/old-api/* /api rewrite
/legacy /new
- Tipo:
301,302,307,308ourewrite. O padrão é301. - Host: um host antes do caminho limita a regra a esse endereço.
*no final: carrega o restante do caminho junto.- Rewrites servem outro caminho da mesma aplicação e mantêm a query string.
Você pode ter até 100 regras. Elas ficam desativadas durante o modo de manutenção.
Headers de resposta e CORS
Headers de resposta e CORS aceita uma regra de header por linha:
* X-Frame-Options: DENY
/api/* Cache-Control: no-store
* -X-Powered-By
Um header que você define substitui o valor enviado pela sua aplicação, e -Nome remove o header. Você pode ter até 50 regras.
Para CORS, liste as origens permitidas, depois os métodos, os headers, se credenciais são permitidas e um max age. O proxy responde às requisições preflight por conta própria, então elas nunca chegam à aplicação, e outras origens não recebem headers de CORS. Se a aplicação tiver senha, os preflights recebem 401.
Páginas de erro e manutenção
- Página de erro: exibida com o status real (502, 503 ou 504) quando a aplicação não consegue responder porque travou, está reiniciando ou está lenta demais.
- Página de manutenção: substitui a página padrão do Railyard enquanto o modo de manutenção está ativo. Ainda é enviada com status 503.
Cole o HTML, ou informe um endereço e o Railyard copia a página a cada vez que você salvar. Uma página copiada pode ter até 64 KB e precisa estar em um endereço público. As páginas são servidas como estão, então use URLs completas para imagens e estilos. O card tem um link de preview.
Roteamento por caminho
Roteamento por caminho serve esta aplicação sob um caminho do endereço de outra aplicação, como shop.example.com/api para a sua API, em um único certificado. Você pode manter o prefixo ou removê-lo.
As duas aplicações precisam estar no mesmo servidor. Roteamento entre servidores ainda não é suportado.
Seu próprio certificado SSL
Configurações → Domínios → Seus próprios certificados. Cole um certificado PEM, com a cadeia, e uma chave PEM sem criptografia. Antes de salvar, o Railyard verifica que:
- a chave combina com o certificado;
- o certificado está válido agora;
- ele cobre pelo menos um dos endereços da aplicação.
O certificado e a chave são armazenados criptografados, e a API nunca retorna a chave. O card mostra a data de expiração, e o Railyard envia um aviso pelas regras de aplicação fora do ar da aplicação 14 dias antes de expirar. Depois que expira, o próximo deploy volta a usar certificados automáticos do Let’s Encrypt. Certificados não podem ficar no railyard.yml, porque isso colocaria uma chave privada no git.
API: GET / POST /api/applications/:id/certificates, DELETE …/certificates/:cert_id.
Limite de taxa (beta)
Limite de taxa define requisições por minuto por IP de cliente. Você pode definir um limite para a aplicação inteira e adicionar limites por caminho:
Whole app: 600
/login 10
/api/* 120
Uma requisição acima do limite recebe 429 com Retry-After.
Beta: limites de taxa precisam da imagem de proxy de edge própria do Railyard no servidor, e essa imagem ainda está sendo distribuída gradualmente. Até seu servidor tê-la, as regras são salvas mas não são aplicadas, e tanto o card quanto o log do deploy avisam isso.
Outros limites:
- Os contadores vivem na memória de cada servidor, então uma aplicação em vários servidores tem o limite aplicado por servidor.
- Atrás do Cloudflare ou de outro proxy, todo visitante aparece com o IP desse proxy, e proxies confiáveis ainda não podem ser configurados.
Bloqueio por país (beta)
Países aceita códigos de país de duas letras em duas listas, permitir apenas e bloquear. UNK cobre endereços sem país conhecido.
- Visitantes bloqueados recebem
403, antes dos limites de taxa, redirecionamentos ou da sua aplicação. - Endereços privados e internos sempre passam.
- Os dados de país vêm do DB-IP Lite.
Isso precisa da mesma imagem de proxy de edge do limite de taxa, então hoje as regras são salvas mas não aplicadas. A mesma limitação do Cloudflare se aplica.
Firewall de aplicação web (beta)
Firewall de aplicação web passa toda requisição pelo OWASP Core Rule Set (injeção de SQL, XSS e as outras categorias do CRS) antes de ela chegar à aplicação. Defina o modo: Desativado (sem verificações), Detectar (registrado nos logs, nunca bloqueia — use isso primeiro para ver o que seria bloqueado) ou Bloquear (aplicado de fato, retorna 403). Vale a partir do próximo deploy; uma requisição bloqueada aparece nos logs da aplicação como qualquer outro bloqueio de edge.
Isso precisa da mesma imagem de proxy de edge do limite de taxa e do bloqueio por país, então até seu servidor tê-la a configuração é salva mas não aplicada, e o card avisa isso.
Cloudflare e rede privada
Colocar o CDN e o WAF do Cloudflare na frente do endereço de uma aplicação, a malha privada entre aplicações, e um único certificado para um domínio wildcard inteiro estão em Rede.
Domínios personalizados
Adicionar domínios, pares com/sem www, subdomínios wildcard e a verificação de propriedade estão em Domínios.