繁体   English   中英

如何使用Grunt或Node服务器基于User-Agent(移动和桌面)重定向请求/代理?

[英]How to redirect requests / proxy based on User-Agent (mobile and desktop) using Grunt or Node server?

我正在使用Grunt及其代理库grunt-connect-proxy 我有两个服务器设置为我的网站的桌面和移动版本(两者都有单独的资产等,因此分离)。 两个站点都托管在0.0.0.0上,但位于不同的端口(9000和10000)。

如何根据User-Agent标头将请求代理到两个不同的服务器(这将告诉我它是移动用户还是桌面用户)? 我可以使用NodeJS中的另一个解决方案吗?

我最终写了一个NodeJS服务器,它使用http-proxy和mobile-detect包来代理请求。

var servers = {
  desktopClientFrontend: 'http://0.0.0.0:10000',
  mobileClientFrontend: 'http://0.0.0.0:9000',
  railsApiBackend: 'http://0.0.0.0:11000'
};

var http = require('http'),
    url = require('url'),
    httpProxy = require('http-proxy'),
    MobileDetect = require('mobile-detect');

var proxy = httpProxy.createProxyServer({});

proxy.on('error', function (err, req, res) {
  res.writeHead(500, {
    'Content-Type': 'text/plain'
  });

  res.end('Something went wrong. And we are reporting a custom error message.');
});

var server = http.createServer(function(req, res) {
  if(url.parse(req.url).pathname.match(/^\/api\//)) {
    proxy.web(req, res, { target: servers.railsApiBackend });
  } else {
    var mobileDetect = new MobileDetect(req.headers['user-agent']);
    if(mobileDetect.mobile()) {
      proxy.web(req, res, { target: servers.mobileClientFrontend });
    } else {
      proxy.web(req, res, { target: servers.desktopClientFrontend });
    }
  }
});

server.listen(80);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM