Como posso permitir que um usuário use seu próprio nome de domínio para um serviço hospedado?

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

Pergunta

Eu estou trabalhando em um aplicativo web ASP.NET MVC que permite às pessoas publicar conteúdo, mas que não publicar o conteúdo para um servidor remoto, eu quero permitir que as pessoas a usar seu nome de domínio diretamente. Por exemplo, o usuário "Tom" pode ter o seu nome de domínio ponto TomSite.com para http: // www. mywebapp.com/user/tom , mas o caminho secundário será também ser mapeados. Por exemplo, TomSite.com/path será mapeado para www.mywebapp.com/user/tom/path, e isso é transparente para o visitante da web. O visitante nunca verá "mywebapp.com" em qualquer lugar na TomSite.com.

Eu acho Smugmug.com fornece esse serviço, para permitir que as pessoas a usar seu próprio nome de domínio para o portfólio de fotografia. Quero conseguir o mesmo resultado.

Como posso fazer isso? Obrigado!

Foi útil?

Solução

Isso requer várias etapas.

Primeiro você tem que descobrir como os usuários irão configurar seu domínio para ter um registro CNAME para você site. Você pode archieve isso em um número de maneiras em que o melhor é a educação. Fazendo parcerias com provedores de hospedagem requer uma grande quantidade de volume.

No IIS isso vai exigir que você adicione ou cada nome do host manualmente (no entanto, isso também poderia ser archieved por meio de scripts) ou ter um endereço IP dedicado apenas para o seu site.

Há também uma necessidade para o domínio a ser associado a uma conta. O usuário tem que adicionar este si e você provavelmente gostaria de acrescentar uma verificação na interface que confirma o domínio está apontado para o seu servidor. O código para esta seria semelhante (lembre-se de incluir o System.Net namespace).

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

Em você ASP.NET MVC projeto que você precisa para implementar rotas para este fim específico. Criar uma classe personalizada herdando de rota que também leva o domínio em consideração.

Outras dicas

Smugmug (que você mencionou) obter os seus usuários a configurar um registro CNAME que irá alias url para seção de fotos pessoais do usuário. Para a maioria dos usuários isso provavelmente vai obrigá-los entrar em contato com o seu host ou olhando para cima arquivos de ajuda, a fim de obtê-lo toda a configuração.

Assim, enquanto www.tomsite.com poderia transparente servir páginas hospedadas em www.mywebapp.com os usuários vão ter de colocar algum tipo de esforço. Para torná-lo um sem costura completamente você vai precisar de algum tipo de acordo com o usuários host (Smugmug parecem ter tal arranjo com GoDaddy).

Eu duvido que você será capaz de configurar essa integração com todos os hosts da web lá fora, por isso a única solução completa seria para hospedar os sites de seus usuários você mesmo (Eu não sei o suficiente sobre a sua situação mais amplo para determinar se essa é uma solução razoável).

Nota: a criação de um alias em seu próprio servidor web (aka url reescrever) não trabalho, a menos que você hospedar seu site você mesmo, como, obviamente, as pessoas que buscam a partir do domínio do utilizador não vai chegar ao seu servidor em primeiro lugar <. / p>

Tenha friendlyname de cada cliente apontou para o endereço IP externo do seu servidor web.

Use o IIS para resolver o friendlyname especificado no pedido de cabeçalho de host para o site lógico que você deseja entregues a que friendlyname. IIS terá todo o prazer mapear tanto um site e uma pasta virtual para a mesma pasta no sistema de arquivos. Criar um site para cada cliente. Em seguida, vincular esse site para friendlyname do cliente.

Lembre-se de mapear o website padrão apenas para o seu próprio friendlyname (s). Se você deixá-lo em modo promíscuo (mapeados para "*") os resultados serão imprevisíveis.

Para definir anfitrião cabeçalho mapeamento

Selecione site da Web padrão em Sites nó. Ações painel na parte superior clique direito em Ligações ... para abrir o ligações de site de diálogo. Haverá uma lista de ligações, provavelmente contendo uma única entrada que diz http * 80. Selecione esta opção e clique no Editar ... botão. Set nome do host para o seu próprio friendlyname.

Executar IIS7 Gestor e para cada site do cliente criar um site sob o Sites nó. Definir tanto caminho do arquivo e de cabeçalho de anfitrião de ligação enquanto estiver criando cada web site. Obviamente, o cabeçalho de host (nome do host) deve ser friendlyname que do cliente.

Basta fazer um novo recorde em seu servidor web configuração tomsite.com diretamente ao seu caminho mywebapp.com/user/tom/?

Veja-o como um Alias:)

Claro, desde que você está asp.net/windows base, eu acho que você vai ter que digg profundamente no IIS para automatizar esse tipo de coisa. Se você estivesse em apache seria a adição de 3 linhas simples para httpd.conf.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top