Hapijs代理:子域路由到maindomain / subdomain

时间:2017-05-22 09:06:30

标签: proxy subdomain reverse hapijs

  1. 主域名:“mymain.com”
  2. 子域名:“subdomain.mymain.com”
  3. 当我从subdomain.mymain.com接到电话时,我需要在mymain.com/somepath/subdomain的浏览器内容中显示。

    我想在hapi-js中使用代理选项并执行上述操作。但随着 像

    这样的代码
    config: {
    
      handler: function(request, reply) {
    
        let hostValue = request.headers.host;
        let path = request.params.path;
        let subdomain = hostValue.split('.')[0];
    
        return reply.proxy({
          uri: 'http://mymain.com/somepath/subdomain'
        });
      } \/\/end of handler
    } //end of config 
    

    我无法实现它。只是页面是空的。这是基于角度的项目,并且不会为此执行角度路线。

    但如果为url:subdomain.mymain.com做以下

    return reply.proxy({
      host: 'mymain.com',
      port: 80,
      protocol: "http"
    });
    

    工作正常。如何解决这个子域问题的任何线索?

1 个答案:

答案 0 :(得分:0)

在您的示例中,您没有将subdomain的值放入网址,将其更改为如下所示:

config: {

  handler: function(request, reply) {

    let hostValue = request.headers.host;
    let path = request.params.path;
    let subdomain = hostValue.split('.')[0];

    return reply.proxy({
      uri: 'http://mymain.com/somepath/'+subdomain
    });
  } \/\/end of handler
} //end of config 

更改此行:

uri: 'http://mymain.com/somepath/subdomain'

到此:

uri: 'http://mymain.com/somepath/'+subdomain

或者,要清理一下,您可以尝试使用h2o2的mapUri配置选项。像这样:

server.route({
  method: 'GET',
  path: '/',
  handler: {
    proxy: {
      mapUri: function (request, callback) {
        let hostValue = request.headers.host;
        let subdomain = hostValue.split('.')[0];
        console.log('proxying for', subdomain)
        callback(null, 'http://mymain.com/somepath/'+subdomain);
      }
    }
  }
});