如何将多个子域redirect到同一个运行快速应用程序
我正在NodeJS中构build一个SaaS应用程序,并使用Express框架。 该网站的个人成员有一个自定义子域名的urllogin。
例如,一家名为ABC Corp的公司可能会在abc.example.com
login,另一家名为Sony的公司可能会在sony.example.com
login
任何想法如何redirect/路由多个子域到同一个应用程序实例?
你实际上可以处理那个特定的路线或范围广泛,然后去Reg Exp
(它允许你做这个app.get(new RegExp('(your|string)\/here'), function…
),你要redirect然后按照下面的代码所做的那样执行redirect操作:
response.writeHead(302, { 'Location': 'yourpath/page.html' //add other headers here... }); response.end();
更新1 :[根据评论和其他更新]
然后,您尝试使用以下应用处理所有请求:
express() .use(express.vhost('abc.example.com', require('/path/to/loginApp').app)) .use(express.vhost('sony.example.com', require('/path/to/loginApp').app)) .listen(80)
其中/path/to/loginApp
可以是绝对path或相对path。
我希望这能解决你的问题。
更新2 :
实际上,当一个请求进来时,请求事件在HTTP服务器上产生。 所以基本上它是通过express来处理的, express.vhost
是一个中间件函数,它在HTTP服务器的另一个实例上引发请求事件,也就是如何工作。
以下是代码:
function vhost(req, res, next){ if (!req.headers.host) return next(); var host = req.headers.host.split(':')[0]; if (req.subdomains = regexp.exec(host)) { req.subdomains = req.subdomains[0].split('.').slice(0, -1); server.emit('request', req, res); } else { next(); } };