In his DNS, should he create an A record pointing at our IP address, or a cname pointing at client.app.com?
Ele deve usar um CNAME apontando para client.app.com. Há muitas razões para fazer isso, mas a melhor é provavelmente porque isso significa menos alterações a serem feitas se o endereço IP do servidor mudar: somente a entrada para client.app.com precisará ser atualizada e tudo o mais que estiver CNAMEd para ele seguirá automaticamente.
Outras razões incluem a incapacidade de ter o mesmo nome. Um registro como registro MX, como um dos outros pôsteres mencionados; bem como a filosofia geral de que um host deve ter apenas um único "nome verdadeiro" (registro A), e outros registros que apontam para o mesmo host devem ser aliases (CNAMEs). É claro que essa filosofia falha quando você tem um único registro A apontando para vários IPs e múltiplos hosts (mas é outro bom argumento para o cliente usar o CNAMES: se o seu serviço se tornar popular, você precisa escalá-lo pelo balanceamento de carga para outros hosts que servem as mesmas coisas, você gostaria que seu cliente se beneficiasse disso sem ter que alterar nada). (É claro que há muitas maneiras de balancear e dimensionar a carga, e você pode facilmente escolher uma que não esteja vinculada ao DNS, mas isso depende da sua implementação.)
Are there any differences in the vhost that we need to create in either case?
Independentemente do método DNS escolhido, você precisará verificar se o apache está configurado para aceitar os outros nomes.
so that when someone types in www.client.com, the url still shows www.client.com, but everything is transparently working on client.app.com
É claro que você vai querer confirmar o abaixo com um tour pelos documentos do apache, mas posso pensar em duas maneiras de fazer isso:
-
UseCanonicalName Off
comServerAlias
dentro de cadaVirtualHost
entrada:UseCanonicalName Off <VirtualHost *:80> ServerName www.client.com ServerAlias client.app.com DocumentRoot /www/client </VirtualHost>
-
Use vários
ServerName
eVirtualHost
:<VirtualHost *:80> ServerName www.client.com DocumentRoot /www/client </VirtualHost> <VirtualHost *:80> ServerName client.app.com DocumentRoot /www/client </VirtualHost>
Lembre-se de que, com qualquer um dos métodos, talvez você tenha que garantir que o HTML e os scripts associados estejam fazendo "a coisa certa" para gerar URLs adequadamente para o comportamento desejado.
Há também muitos bons exemplos e discussões interessantes aqui: link sobre o tópico