In che modo consentire ai clienti di accedere a un SaaS utilizzando il nome dell'organizzazione nel dominio?Come eseguire sottodomini in stile cliente/cliente utilizzando Nodo ed Express
Ad esempio, un'app Web, esempio.com, può avere 2 clienti, OrgA e OrbB.
Una volta effettuato l'accesso, ciascun cliente viene reindirizzato al proprio sito, orga.esempio.com/orgb.esempio.com.
Una volta che la richiesta che include il sottodominio raggiunge il server nodo, la mia speranza è quella di gestire la richiesta con un singolo percorso "/". All'interno del gestore di rotte, controlla semplicemente l'intestazione host e tratta il sottodominio come parametro per l'organizzazione. Qualcosa di simile:
app.get "/*", app.restricted, (req, res) ->
console.log "/* hit with #{req.url} from #{req.headers.host}"
domains = req.headers.host.split "."
if domains
org = domains[0]
console.log org
# TODO. do something with the org name (e.g. load specific org preferences)
res.render "app/index", { layout: "app/app" }
NB. Il primo elemento dell'array di domini è il nome dell'organizzazione. Suppongo che non sia presente alcuna porta nell'intestazione host e, per ora, non sto considerando come gestire i nomi di sottodomini non dell'organizzazione (ad esempio www, blog, ecc.).
La domanda che ho quindi riguarda più come node/express può essere configurato per gestire le richieste con diverse intestazioni host. Questo è generalmente risolto in Apache utilizzando un alias con caratteri jolly o in IIS utilizzando un'intestazione host.
un Apache/Rails esempio è @http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails
Come può lo stesso essere raggiunto nel nodo?
Si potrebbe scrivere un middleware che guarda l'intestazione host, ottiene qualsiasi dato ha bisogno di quell'host specifico e aggiunge l'oggetto req da utilizzare nelle rotte/nel middleware. –
Penso che quel bit sia quello che ho già (anche se non ancora trasferito al middleware). Sono bloccato/non chiaro su come configurare un server per catturare * .example.com. Penso che possa essere richiesto un proxy (https://github.com/nodejitsu/node-http-proxy) ma ho bisogno di saperne di più prima di tentare di capirlo. Ho anche bisogno della soluzione per farmi sviluppare localmente (su OSX). – mattgi