Un registro o nombre

Un registro o nombre

Tengo un servidor (Ubuntu + Apache) donde alojamos una aplicación donde los clientes pueden crear sus propios subdominios, es decir, básicamente subdominios comodín.

Tenemos un cliente que quiere apuntar su propio dominio (www.client.com) a su subdominio único (client.app.com) en nuestro servidor. Esto debería suceder de forma transparente, de modo que cuando alguien escriba www.client.com, la URL todavía muestre www.client.com, pero todo funcione de forma transparente en client.app.com.

En su DNS, ¿debería crear un registro A que apunte a nuestra dirección IP o un cname que apunte a client.app.com?

¿Hay alguna diferencia en el vhost que necesitamos crear en ambos casos?

Respuesta1

En su DNS, ¿debería crear un registro A que apunte a nuestra dirección IP o un cname que apunte a client.app.com?

Debería usar un CNAME que apunte a client.app.com. Hay muchas razones para hacer esto, pero la mejor probablemente sea porque significa que se deben realizar menos cambios si cambia la dirección IP del servidor: solo será necesario actualizar la entrada client.app.com y todo lo demás. El CNAME seguirá automáticamente.

Otras razones incluyen la imposibilidad de tener el mismo nombre de registro A que el registro MX, como uno de los otros carteles mencionados; así como la filosofía general de que un host solo debe tener un único "nombre verdadero" (registro A), y otros registros que apunten al mismo host deben ser alias (CNAME). Por supuesto, esa filosofía se rompe cuando tienes un único registro A que apunta a múltiples IP y múltiples hosts (pero es otro buen argumento para que el cliente use CNAMES: si tu servicio se vuelve popular, necesitarás escalarlo equilibrando la carga para otros hosts que sirven las mismas cosas, usted querrá que su cliente se beneficie de eso sin tener que cambiar nada). (Por supuesto, hay muchas formas de equilibrar la carga y escalar, y también puedes elegir una que no esté vinculada al DNS, pero eso depende de tu implementación).

¿Hay alguna diferencia en el vhost que necesitamos crear en ambos casos?

Independientemente del método DNS que elija, deberá asegurarse de que Apache esté configurado para aceptar los otros nombres.

de modo que cuando alguien escriba www.client.com, la URL todavía muestre www.client.com, pero todo funcione de forma transparente en client.app.com

Por supuesto, querrás confirmar lo siguiente con un recorrido por los documentos de Apache, pero se me ocurren dos formas de hacerlo:

  1. UseCanonicalName Offcon ServerAliasel interior de cada unoVirtualHostentrada:

    UseCanonicalName Off <VirtualHost *:80> ServerName www.client.com ServerAlias client.app.com DocumentRoot /www/client </VirtualHost>

  2. Utilice múltiplesServerNameyVirtualHostentradas:

    <VirtualHost *:80> ServerName www.client.com DocumentRoot /www/client </VirtualHost> <VirtualHost *:80> ServerName client.app.com DocumentRoot /www/client </VirtualHost>

Tenga en cuenta que con cualquiera de los métodos, es posible que deba asegurarse de que el HTML y los scripts asociados estén haciendo "lo correcto" para generar las URL correctamente para el comportamiento que desea.

También hay muchos buenos ejemplos y debates interesantes aquí:http://httpd.apache.org/docs/2.4/vhosts/mass.htmlen el tema.

información relacionada