Eu tenho uma ferramenta que gera blocos de configuração do Apache 2. Eu gostaria que o que ele gera fosse independente de qualquer que seja o ServerName real, mas sem a necessidade de realmente executar/analisar a configuração do Apache da máquina de destino.
Em outras palavras, o que eu preciso é algo assim:
<VirtualHost *>
ServerName foobar // <-- no top level domain
...
</VirtualHost>
Parece que, ao ler os documentos, o campo ServerName deve sempre ser o nome de domínio totalmente qualificado e, portanto, inerentemente, um bloco vhost não pode ser gravado sem conhecer o FQDN do servidor de destino. Isso é verdade ou há alguma solução alternativa?
Responder1
Sim, ServerName
deve ser uma identificação real do servidor, mas também pode ser um endereço IP.
ServerAlias
por outro lado, pode conter curingas.
Documentaçãomenciona isso.
Mas também diz que não é obrigatório
Se nenhum ServerName for especificado, o servidor tentará deduzir o nome de host visível do cliente solicitando primeiro ao sistema operacional o nome de host do sistema e, se isso falhar, executando uma pesquisa reversa em um endereço IP presente no sistema.
Responder2
Nem umServerName
nem umServerAlias
são diretivas obrigatórias em um bloco VirtualHost.
Você pode simplesmente omiti-los.
O manual explica quando você faz isso:
Se não
ServerName
for especificado, o servidor tenta deduzir o nome de host visível do cliente, primeiro solicitando ao sistema operacional o nome de host do sistema e, se isso falhar, executando uma pesquisa reversa em um endereço IP presente no sistema.
que pode ser exatamente o que você precisa.
Adicionalmente,na práticaessas diretivas também aceitarão quase qualquer string...
Uma única palavra, como localhost
ou test
e, example
funcionará, assim como coisas que se parecem mais com FQDN, mas que não são nomes DNS realmente funcionais, como there.is.no.tld.named.serverfault.
Usar algo assim pode resultar em um aviso de inicialização em o log de erros (que você pode evitar adicionando essa string a /etc/hosts
) e pode resultar em uma situação em que o Apache httd não consegue distinguir seu bloco VirtualHost de quaisquer outros presentes e suas configurações não terão efeito.https://httpd.apache.org/docs/2.4/vhosts/details.html