O maior fator que afeta quantos server_name
s você pode razoavelmente ter é o tamanho do cache da sua CPU (e velocidade, é claro).
Primeiro, o nginx armazena todos os server_name
s que você define em três tabelas hash (dependendo da se você usou curingas no nome) por par de IP / porta em que nginx listen
s está ativado. O tamanho dessas estruturas é otimizado para ser um múltiplo do tamanho da linha de cache da CPU, e o nginx pretende ser capaz de combinar o server_name
para uma solicitação de entrada inteiramente do cache da CPU sem ter que ir para a RAM (relativamente) muito mais lenta.
Fora da caixa, o nginx configura tabelas de hash para nomes de servidor com 512 entradas de 32 bytes cada. Isso chega a 16 KiB e cabe facilmente no cache L1 da CPU, ou pelo menos no cache L2. E mesmo se você precisar expandi-lo, ele ainda deve ser pequeno o suficiente para caber no cache na maior parte do tempo.
Esta estratégia sugere que você deve se esforçar para manter a lista de nomes no mínimo.
Por exemplo, mesmo que seja "mais lento" para corresponder a uma entrada curinga, como .example.com
, pode ser mais rápido, em média, do que tentar corresponder a várias centenas de subdomínios de example.com definidos explicitamente.
Veja também a documentação do nginx em otimização de server_name
s .