Müşterilerin bir SaaS'a etki alanındaki kuruluş adlarını kullanarak erişmelerine nasıl izin verilir? Örneğin, bir web uygulaması olan example.com, OrgA ve OrbB olmak üzere 2 müşteriye sahip olabilir.Düğüm ve Express'i kullanarak müşteri/istemci stili alt etki alanları nasıl yapılır
Oturum açtıktan sonra, her müşteri kendi sitesine orga.example.com/orgb.example.com adresine yönlendirilir.
Alt etki alanını içeren istek, düğüm sunucusuna ulaştığında, isteğim, isteği tek bir '/' yolla ele almaktır. Rota işleyicisinin içinde, ana makine başlığını basitçe inceler ve alt alanı, kuruluş için bir param olarak ele alır. gibi şey:
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. Alan dizisindeki ilk öğe kuruluş adıdır. Ana bilgisayar üstbilgisinde hiçbir bağlantı noktasının görünmediğini ve şimdilik, kuruluş dışı alt etki alanı adlarını (ör. Www, blog, vb.) Nasıl ele alacağımı düşünmüyorum.
Bu yüzden sahip olduğum soru, farklı ana bilgisayar başlıklarıyla istekleri işlemek için nasıl düğüm/ifade yapılandırılabileceğiyle ilgili. Bu genellikle Apache'de bir joker karakter takma adı kullanılarak veya IIS'de bir ana bilgisayar üstbilgisi kullanılarak çözülür.
bir Apache/Raylar, örneğin aynı düğümde elde edilebilir nasıl http://37signals.com/svn/posts/1512-how-to-do-basecamp-style-subdomains-in-rails
@ mı?
ulaşmak için http-vekil kullanabilirsiniz ne olursa olsun verileri alır Bu belirli ana bilgisayara ihtiyaç duyar ve rotalar/ara katmanlarda kullanılmak üzere req nesnesine ekler. –
Bence şu an sahip olduğum şey (henüz orta katmana taşınmamış olsa da). * .example.com'u yakalamak için bir sunucunun nasıl ayarlanacağını engelledim/açık değilim. Bir vekil düşünmek gerekli olabilir (https://github.com/nodejitsu/node-http-proxy) ama anlamaya çalışmadan önce daha fazla öğrenmem gerekiyor. Yerel olarak (OSX'de) gelişmeme izin veren bir çözüme de ihtiyacım var. – mattgi