Come posso consentire a un utente di utilizzare il proprio nome di dominio per un servizio ospitato?

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

Domanda

Sto lavorando a un'app Web ASP.NET MVC che consente alle persone di pubblicare contenuti, ma oltre a pubblicare i contenuti su un server remoto, desidero consentire alle persone di utilizzare direttamente il proprio nome di dominio. Ad esempio, l'utente " Tom " può avere il suo nome di dominio TomSite.com puntare a http://www.mywebapp.com/user/tom , ma verrà mappato anche il percorso secondario. Ad esempio, TomSite.com/path verrà mappato su www.mywebapp.com/user/tom/path e questo è trasparente per il visitatore web. Il visitatore non vedrà mai " mywebapp.com " ovunque su TomSite.com.

Penso che Smugmug.com offra tale servizio, per consentire alle persone di utilizzare il proprio nome di dominio per il portfolio fotografico. Voglio ottenere lo stesso risultato.

Come posso farlo? Grazie!

È stato utile?

Soluzione

Ciò richiede più passaggi.

Per prima cosa devi scoprire come i tuoi utenti configureranno il loro dominio per avere un record CNAME per il tuo sito. Puoi archiviarlo in diversi modi in cui il meglio è l'educazione. Fare partnership con i provider di hosting richiede un grande volume.

In IIS questo richiederà di aggiungere manualmente ciascun nome host (tuttavia potrebbe anche essere archiviato tramite script) o di avere un indirizzo IP dedicato solo per il tuo sito.

È inoltre necessario che il dominio sia associato a un account. L'utente deve aggiungerlo da solo e probabilmente aggiungerai un segno di spunta nell'interfaccia che conferma che il dominio è puntato sul tuo server. Il codice per questo sarebbe simile (ricordarsi di includere lo spazio dei nomi System.Net).

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

Nel progetto ASP.NET MVC è necessario implementare route per questo scopo specifico. Crea una classe personalizzata che eredita da Route che tenga conto anche del dominio.

Altri suggerimenti

Smugmug (che hai menzionato) induce i propri utenti a configurare un record CNAME che alias l'URL della sezione foto personale dell'utente. Per la maggior parte degli utenti ciò richiederà probabilmente di contattare il proprio host o di cercare i file della guida per ottenere tutto il setup.

Quindi, mentre www.tomsite.com potrebbe servire in modo trasparente pagine ospitate su www.mywebapp.com, gli utenti dovranno impegnarsi in qualche modo. Per renderlo completamente fluido, avrai bisogno di un accordo con il host web degli utenti (sembra che Smugmug abbia un simile accordo con GoDaddy).

Dubito che sarai in grado di configurare tale integrazione con tutti gli host web là fuori, quindi l'unica soluzione completa sarebbe quella di ospitare tu stesso i siti Web dei tuoi utenti (non so abbastanza della tua situazione più ampia per determinare se quello è una soluzione ragionevole).

Nota: la configurazione di un alias sul proprio server Web (ovvero la riscrittura dell'URL) non funzionerà, a meno che non si ospiti il ??proprio sito, poiché ovviamente le persone che recuperano dal dominio dell'utente non arriveranno al server in primo luogo.

Far indicare a ogni cliente il nome descrittivo all'indirizzo IP esterno del tuo server web.

Utilizzare IIS per risolvere il nome descrittivo specificato nella richiesta dell'intestazione host sul sito Web logico che si desidera recapitare a quel nome descrittivo. IIS mapperà felicemente sia un sito Web sia una cartella virtuale sulla stessa cartella nel file system. Crea un sito Web per ogni cliente. Quindi associa quel sito Web al nome descrittivo del cliente.

Ricorda di mappare il sito Web predefinito solo sui tuoi nomi amichevoli. Se lo lasci in modalità promiscua (mappato su " * ") i risultati saranno imprevedibili.

Per impostare il mapping dell'intestazione host

Seleziona Sito Web predefinito nel nodo Siti . Nel riquadro Azioni in alto a destra, fai clic su Bindings ... per aprire la finestra di dialogo Site Bindings . Ci sarà un elenco di associazioni, probabilmente contenente una singola voce che dice http * 80. Selezionare questo e fare clic sul pulsante Modifica ... . Imposta Nome host sul tuo nome descrittivo.

Esegui Gestione IIS7 e per ogni sito del cliente crea un sito Web nel nodo Siti . Impostare il percorso del file e l'associazione dell'intestazione host durante la creazione di ciascun sito Web. Ovviamente l'associazione dell'intestazione host (nome host) dovrebbe essere il nome descrittivo del cliente.

È sufficiente creare un nuovo record nell'impostazione del server Web tomsite.com direttamente sul percorso mywebapp.com/user/tom/?

Guardalo come un alias :)

Ovviamente, dal momento che sei basato su asp.net/windows, penso che dovrai scavare in profondità in IIS per automatizzare questo tipo di cose. Se fossi su apache, aggiungerebbe 3 semplici righe a httpd.conf.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top