【问题标题】:Subdomain routing in loopback to multiple static files (angular apps)环回多个静态文件的子域路由(角度应用程序)
【发布时间】:2018-04-16 23:47:10
【问题描述】:

我有两个 Angular 2 客户端应用程序,我想从我的环回后端提供服务。我已经能够从子目录 (www.mysite.com/subdirectory) 成功地为它们提供服务,但我正在尝试从子域 (www.subdomain.mysite.com) 为它们提供服务。

Loopback 似乎没有内置的方式来处理通过中间件或我能看到的任何其他地方的子域路由。所以我试图通过匹配在 middleware.json 文件中为final 设置的 url-not-found-handler 中的主机名来完成路由:

  if (req.hostname.match(/subdomain1\./g)) {
    console.log('requesting subdomain1 site')
    res.sendFile(path.resolve() + '/dist/subdomain1/index.html')
  } else if (req.hostname.match(/subdomain2\./g)) {
    console.log('requesting subdomain2 site')
    res.sendFile(path.resolve() + '/dist/subdomain/index.html')
  } else {
    next();
  }

我还在 middleware.json 中设置了静态文件:

  "files": {
      "loopback#static": [
        {
          "name": "subdomain1",
          "params": "dist/subdomain1"
        },
        {
          "name": "subdomain2",
          "params": "dist/subdomain2"
        }
    ]
  }

这似乎有效,因为它正确匹配并发送正确的 index.html 文件。通过在浏览器中检查,我知道它是正确的 index.html。

但由于某种原因,实际提供的 Angular 应用程序总是loopback#static 数组中的第一个。如果我首先有 subdomain2,那么 subdomain1.mysite.com 和 subdomain2.mysite.com 都会显示。

如何解决此问题并根据子域提供不同的应用程序?

【问题讨论】:

    标签: node.js angular express url-routing loopbackjs


    【解决方案1】:

    所以我想出了一个解决方案。不要认为loopback 有内置的方法来处理这个问题,所以让它与以下内容一起工作:

    从 middleware.json 中清除文件部分

    "files": {}
    

    使用vhostserve-static的组合基于子域进行投放

    var vhost = require('vhost');
    var serveStatic = require('serve-static');
    
    var serveSubdomain1 = serveStatic('dist/subdomain1', {'index': ['index.html']})
    var serveSubdomain2 = serveStatic('dist/subdomain2', {'index': ['index.html']})
    
    app.use(vhost('subdomain1.mysite', serveSubdomain1));
    app.use(vhost('subdomain2.mysite', serveSubdomain2));
    

    【讨论】:

      猜你喜欢
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 2018-01-07
      相关资源
      最近更新 更多