簡體   English   中英

Node.js-每個用戶的子域+允許自定義域

[英]Node.js - subdomain per user + allowing custom domain

使用Node.js / Express,我有一個REST API,其中包含多個使用該API的同構/通用應用程序。

我想允許用戶擁有自己的子域,並且在注冊時會動態發生。

根據我的研究,最好的方法是將通配符記錄指向同構/通用應用程序服務器,並在其中具有一些邏輯,該邏輯可以解釋尋找子域的請求並提供適當的頁面。 我認為這需要擺在應用程序的前面,並且對服務器的每個請求都會發生這種情況。

這將是解決此問題的最佳方法嗎? 還有其他方法嗎?

可伸縮性是否存在任何潛在問題?

然后,我想允許用戶擁有一個自定義域。 Tumblr和其他服務提供了類似的功能,使您可以將CNAME記錄指向用戶子域。 我一直無法找到有關此工作原理的許多信息。

允許用戶在應用程序中為其區域使用自定義域的最佳方法是什么?

這將是解決此問題的最佳方法嗎? 還有其他方法嗎?

可伸縮性是否存在任何潛在問題?

用通配符DNS描述的是最好的方法,因此不會遇到任何可擴展性問題。 另一種選擇是使用具有API(例如Route 53)的DNS主機,並為每個用戶動態地向其添加一個子域。 相對於通配符,這有幾個缺點。 維護起來可能會很痛苦,新的DNS記錄可能要傳播一段時間,並且您可能很快達到限制(在Route 53上,您需要請求增加限制以使每個AWS賬戶的托管區域超過500個)。

允許用戶在應用程序中為其區域使用自定義域的最佳方法是什么?

您可以使用相同的邏輯檢查子域(檢查HTTP主機頭)。 當有請求進入時,您可以檢查Host標頭並確定域所屬的用戶(無論是子域還是完整的自定義域); 只要他們告訴您他們的域名是什么。 添加CNAME是他們的責任(盡管您顯然可以給他們提供指導)。

如果支持HTTPS,則只能在支持SNI的設備上執行此操作。 您可以為子域獲取通配符證書,但是您將需要域所有者上載PEM文件或獲取其許可權,並使用諸如Lets Encrypt的api進行webroot域驗證檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM