¿Cómo puedo permitir que un usuario use su propio nombre de dominio para un servicio alojado?

StackOverflow https://stackoverflow.com/questions/144630

Pregunta

Estoy trabajando en una aplicación web ASP.NET MVC que permite a las personas publicar contenido, pero aparte de publicar el contenido en un servidor remoto, quiero permitir que las personas usen su nombre de dominio directamente. Por ejemplo, el usuario " Tom " puede tener su nombre de dominio TomSite.com apuntando a http://www.mywebapp.com/user/tom , pero la ruta secundaria también se asignará. Por ejemplo, TomSite.com/path se asignará a www.mywebapp.com/user/tom/path, y esto es transparente para el visitante web. El visitante nunca verá " mywebapp.com " En cualquier lugar en TomSite.com.

Creo que Smugmug.com proporciona dicho servicio para permitir que las personas usen su propio nombre de dominio para el portafolio de fotos. Quiero lograr el mismo resultado.

¿Cómo puedo hacer esto? Gracias!

¿Fue útil?

Solución

Esto requiere múltiples pasos.

Primero debes averiguar cómo tus usuarios configurarán su dominio para tener un registro CNAME para tu sitio. Puede archivar esto de varias maneras donde lo mejor es la educación. Hacer asociaciones con proveedores de hosting requiere un gran volumen.

En IIS, esto requerirá que agregues cada nombre de host manualmente (sin embargo, esto también podría ser archivado a través de secuencias de comandos) o tener una dirección IP dedicada solo para tu sitio.

También es necesario que el dominio esté asociado a una cuenta. El usuario tiene que agregar esto ellos mismos y usted probablemente agregaría una verificación en la interfaz que confirma que el dominio está apuntando a su servidor. El código para esto sería similar (recuerde incluir el espacio de nombres de System.Net).

if (Dns.GetHostEntry("www.user.example.com").HostName == "www.example.com")
{
    // www.user.example.com is a CNAME for www.example.com
}

En tu proyecto ASP.NET MVC necesitas implementar rutas para este propósito en particular. Cree una clase personalizada heredada de Route que también tenga en cuenta el dominio.

Otros consejos

Smugmug (a quien mencionaste) hace que sus usuarios configuren un registro CNAME que alias la url para la sección de fotos personales del usuario. Para la mayoría de los usuarios, es probable que esto requiera que se pongan en contacto con su host o que busquen los archivos de ayuda para poder configurar todo.

Por lo tanto, si bien www.tomsite.com puede servir de forma transparente las páginas alojadas en www.mywebapp.com, los usuarios tendrán que hacer algún esfuerzo. Para que sea completamente transparente, necesitará algún tipo de acuerdo con el el host web de los usuarios (parece que Smugmug tiene tal acuerdo con GoDaddy).

Dudo que pueda configurar dicha integración con todos los hosts web, por lo que la única solución completa sería alojar los sitios web de sus usuarios (no sé lo suficiente sobre su situación general para determinar si eso es una solución razonable).

Nota: la configuración de un alias en su propio servidor web (también conocido como reescritura de URL) no funcionará, a menos que usted mismo aloje su sitio, ya que, obviamente, las personas que recuperan el dominio de su usuario no llegarán a su servidor en primer lugar.

Haga que el nombre amistoso de cada cliente apunte a la dirección IP externa de su servidor web.

Use IIS para resolver el nombre amistoso especificado en la solicitud del encabezado del host al sitio web lógico que desea que se entregue a ese nombre amistoso. IIS felizmente asignará un sitio web y una carpeta virtual a la misma carpeta en el sistema de archivos. Crear un sitio web para cada cliente. A continuación, enlace ese sitio web al nombre amistoso del cliente.

Recuerde asignar el sitio web predeterminado solo a sus propios nombres de amigos. Si lo deja en modo promiscuo (asignado a " * "), los resultados serán impredecibles.

Para establecer la asignación de encabezado de host

Seleccione Sitio web predeterminado en el nodo Sitios . En el panel Acciones en la parte superior derecha, haga clic en Enlaces ... para abrir el cuadro de diálogo Enlaces del sitio . Habrá una lista de enlaces, que probablemente contengan una sola entrada que diga http * 80. Seleccione esto y haga clic en el botón Editar ... . Establezca Nombre de host en su propio nombre amistoso.

Ejecute IIS7 Manager y, para cada sitio del cliente, cree un sitio web en el nodo Sitios . Establezca la ruta del archivo y el enlace del encabezado del host mientras crea cada sitio web. Obviamente, el enlace del encabezado del host (nombre del host) debe ser el nombre descriptivo del cliente.

Simplemente haga un nuevo registro en la configuración de su servidor web tomsite.com directamente a su mywebapp.com/user/tom/ path?

Véalo como un alias :)

Por supuesto, ya que está basado en asp.net/windows, creo que tendrá que profundizar en IIS para automatizar este tipo de cosas. Si estuvieras en Apache, estarías agregando 3 líneas simples a httpd.conf.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top