2011-02-15 30 views
6

Estoy creando una aplicación en una pila LAMP y deseo brindar al usuario la posibilidad de usar su propio dominio en lugar de un subdominio de mi sitio. p.ej.URL/Dominio personalizado (alias CNAME?)

En lugar de: http://some_user.mysite.com

Usarán: http://store.some_user.com/

Sé que hay algunas empresas que proporcionan este utilizando los registros CNAME. (http://help.bigcartel.com/articles/14-using-a-custom-domain) sin embargo, no estoy seguro de cómo logran este extremo a extremo.

Mis preguntas son:

  1. ¿Cómo se llama este proceso? (De modo que puedo investigar esto más adelante si es necesario)

  2. ¿Qué debo hacer para proporcionar esto? es decir. ¿Qué debo hacer en DNS, apache y php para que esto funcione?

Cualquier consejo, enlace o fragmento de código sería muy apreciado.

Gracias


ACTUALIZACIÓN

Hasta ahora he podido configurar la entrada DNS comodín sin embargo sigo teniendo problemas con el registro CNAME resolver al otro dominio. por ej.

http://store.weareunified.com/ -> http://weareunified.joshstuart.com.au/

weareunified.com (Esta es una prueba usuario del host) DNS

weareunified.com. A 111.67.3.227 
store CNAME weareunified.joshstuart.com.au. 

joshstuart.com.au (Este es el principal host de la aplicación) DNS

joshstuart.com.au. A 111.67.3.227 
* CNAME joshstuart.com.au. 

Respuesta

7

Tengo esta configuración usando LAMP y funciona muy bien. He aquí cómo lo hice:

  1. El servidor de destino con mi aplicación está en un registro (sub) de dominio A normal. Entonces, en su caso, supongo que tiene la aplicación ejecutándose en joshstuart.com.au.
  2. El cliente necesita cambiar su entrada DNS para store.weareunified.com a CNAME a joshstuart.com.au.
  3. servidor Apache tiene un host virtual sin una especificación de dominio (en mi caso), simplemente una <VirtualHost *:80>

Eso es todo. En este momento hay más de 70 dominios que CNAME para el dominio principal de la aplicación, y cada uno sirve su sitio individual según sea necesario (sin una redirección, etc.).

+0

En realidad veo el problema, creo. ServerName cPanel102-469.hosting24.com.au DocumentRoot/usr/local/apache/htdocs ¿Debo señalar esto al docroot de mi dominio joshstuart.com.au? – User123342234

+0

Sí, el DocumentRoot debe apuntar a su aplicación. Además, no incluya una especificación ServerName, ya que escuchará cualquier dominio que CNAME le dé, no solo cPanel102-469.hosting24.com.au. – Berklee

+0

¡Gracias por su ayuda! Los hosts virtuales predeterminados me estaban frenando. – User123342234

5

Actu Aliado, no necesitas hacer nada.

Sus usuarios necesitan que su proveedor DNS agregue un registro CNAME que básicamente asigna http://app.some_user.com/ a http://some_user.app.com.

Cualquier cliente DNS que busque http://app.some_user.com/ debe buscar http://some_user.app.com, por lo que se trata de un problema de DNS/cliente, no de un servidor.

Amazon recomienda esta misma técnica para los usuarios de servidores EC2.

Tenga en cuenta que los registros CNAME tienen una limitación, no se pueden asignar a la raíz de un dominio; sus usuarios no pueden asignar http://some_user.com/, solo http://app.some_user.com/ como CNAME.

+0

Una cosa que vale la pena destacar es que por su lado, @Josh, usaría una [entrada DNS comodín] (http://en.wikipedia.org/wiki/Wildcard_DNS_record) para '* .app.com 'para evitar tener que jugar con sus propios registros DNS cada vez que agrega un cliente. Pero para la dirección personalizada del usuario, estoy con Rami, es su dominio y lo administrarán, ya sea con un CNAME o con un registro A apuntando a la IP de su servidor real. –

+0

Gracias por su ayuda. Disculpe mi ignorancia, pero un cname actuará como un "reenviador" o un alias de URL. p.ej. ¿aparece app.some_user.com/products en la barra de direcciones de esa manera o se convertirá en some_user.app.com/products? – User123342234

+0

Aparecerá como app.some_user.com/products, que supongo que es lo que quiere :-) –

1

Tengo algo similar que hice con el cpanel api2.

Básicamente, el usuario apunta su dominio a mi dns, y yo uso la API para estacionar su dominio en el mío.

Guardo el dominio de cada usuario en una base de datos.

En una carga de página, extraigo el http_host y lo comparo con mi base de datos para ver si existe el dominio. Luego cargo la página según la configuración de los usuarios (estoy publicando todas las páginas del mismo script) y las entradas de la base de datos.

Para reducir la carga de la base de datos, guardo la información en una sesión que identifica el host. Puedo verificar esto en cada carga posterior en lugar de verificar la base de datos cada vez.

+0

Esto es más o menos lo que hice, excepto que en lugar de estacionar su dominio estoy usando una entrada de comodín en el host de la aplicación principal (joshstuart.com.au) y una entrada CNAME en el host de los usuarios (para probar weareunified.com). Sin embargo, no se está resolviendo correctamente. Todo el lado DB y el reconocimiento del sitio a través de http_host está bien. ¿Tiene algún enlace/código para esta solución de API? – User123342234

+0

En cuanto a la API, hay una clase en el sitio web de cpanel que la implementa. Sin embargo, hay un error con eso. http://docs.cpanel.net/twiki/bin/view/AllDocumentation/AutomationIntegration/ApiTwo En relación con su aplicación, ¿cada usuario tiene un directorio o le sirve el mismo script? ¿Está intentando vincular el dominio de los usuarios con su subdominio? Si es así, eso no funcionará desde el uso de comodines, el subdominio no es específico y por lo tanto no puede apuntar un dominio a un subdominio que no está explícitamente definido en sus DN. – frostymarvelous

+0

Su mejor opción es usar estacionamiento de dominio ya que el dominio aterrizará en su sitio y puede hacer los controles necesarios. Supongo que está tratando de obtener el subdominio en el que ha aterrizado el dominio. – frostymarvelous

0

La otra posibilidad es ser realmente el host DNS del usuario y manejar todos los registros. Puede obtener una solución de código abierto para esto. (Pero es posible que necesite poseer dos servidores DNS en diferentes subredes).

0

Aquí hay un par de partes diferentes: configurar las entradas de DNS configuradas y luego hacer que Apache responda a la solicitud.

¿Tiene el CNAME configurado correctamente para el cliente? Tenga en cuenta que no puede configurar un CNAME en weareunited.com, debe estar en store.weareunited.com u otro nombre de host que no sea el dominio raíz.

Parece que no entiende cómo funciona el CNAME. Una versión demasiado simplificada es, cuando un usuario solicita store.weareunited.com, su servidor de nombres local (por ejemplo, el servidor de nombres que está en el ISP del usuario final. Para mí en Comcast, por lo general es un NS Comcast en Beaverton, Oregón. Esto es asumiendo que local nameserver aún no ha resuelto el nombre de host y no lo tiene en caché) consultará los servidores de nombres raíz para determinar quién es el responsable del dominio. El servidor nam local consultará el servidor de nombres de dominio para obtener el registro. El registro podría ser un registro A, que es una dirección IP, o un CNAME, que apunta a otro nombre de host.

Cuando el Namesever local obtiene el CNAME, se ejecutará nuevamente a través de este proceso para obtener el registro A. Una vez que finalmente tenga el registro A con la dirección IP, devolverá la dirección IP al navegador del usuario final, y el navegador web hará una solicitud a la dirección IP.

El resultado final es que el navegador web obtiene una dirección IP, y luego realiza una solicitud a esta dirección IP utilizando el nombre de host original como el encabezado del host - store.weareunited.com. Por lo tanto, Apache debe configurarse para recibir solicitudes para el nombre de host store.weareunited.com.

PHP no importa lo que el nombre de host es, a no ser que se está comprobando las variables de entorno como $ _SERVER ...

Puede llegar a sus clientes para establecer un CNAME a joshstuart.com.au. Ciertamente podría crear nombres de host adicionales como weareunited.joshstuart.com.au, o hacer un comodín, y luego hacer que sus clientes establezcan el objetivo CNAME para ese nombre de host único, pero ¿para qué molestarse? Que sólo tendría:

store.weareunited.com. 3600 IN CNAME joshstuart.com.au. 

Mientras joshstuart.com.au entonces manos a cabo una dirección IP a su servidor web, el CNAME funcionará. Como mencioné anteriormente, Apache verá una solicitud de store.weareunited.com, por lo que deberá configurar un host virtual para ese nombre de host, o crear un vhost genérico como menciona Berklee (aunque no estoy seguro de qué apache directivas que usaría para asegurar que la solicitud se asigna a los archivos adecuados para el dominio ...).

+0

Gracias por la explicación. Desafortunadamente, resultó que estaba teniendo problemas con el lado virtual de las cosas. – User123342234