带有http和https路由的node.js

时间:2015-03-21 03:25:24

标签: node.js http ssl https

目前,我使我的node.js项目同时创建了http和https服务器。

var httpServer = http.createServer(app);
httpServer.listen(3000);

var httpsOptions = {
  ca: fs.readFileSync(config.https.ssl.ca, 'utf8'),
  key: fs.readFileSync(config.https.ssl.key, 'utf8'),
  cert: fs.readFileSync(config.https.ssl.cert, 'utf8')
};
var httpsServer = https.createServer(httpsOptions, app);
httpsServer.listen(8000);

此外,我使用此中间件将所有http流量重定向到https。

app.all('*', function(req, res, next){  
  var host = req.header("host");

  if (host && host.indexOf('localhost') !== -1) {
    next()
  } else if (req.connection.encrypted) {
    next();
  } else {
    res.redirect('https://' + host + req.url);
  }
});

但对于某些网页,我不需要https连接,比如http://www.domain.com/shops/路由。我可以使用http方法制作此路由,所有其他路由仍使用https吗?

p.s:此页面请求来自其他路线的资源,如bower_components,public,...等等。

1 个答案:

答案 0 :(得分:0)

您可以按如下方式找到请求路径,这可能会帮助您相应地重定向您的请求。

var url_parts = url.parse(req.url);
console.log(url_parts);
console.log(url_parts.pathname);