【问题标题】:Create proxy according URL path根据 URL 路径创建代理
【发布时间】:2015-09-06 05:37:03
【问题描述】:

我需要根据来自浏览器的一些 URL 创建代理, 因为我对这个主题相当陌生,所以我不知道如何测试它......:( 我需要一些方法来测试它,看看这确实有效 我使用此博客中的以下代码

http://blog.nodejitsu.com/node-http-proxy-1dot0/

var httpProxy = require('http-proxy')

var proxy = httpProxy.createProxy();

var options = {
    'foo.com': 'http://website.com:8001',
    'bar.com': 'http://website2.com:8002'
}

require('http').createServer(function(req, res) {
    proxy.web(req, res, {
        target: options[req.headers.host]
    });
}).listen(8000);

我需要的是,当您输入浏览器 localhost:8000 时,您将路由(代理)到具有不同路径的新服务器,如选项中所述。

【问题讨论】:

  • 那么问题出在哪里?
  • 你不能放置 localhost:8000 并被重定向,因为req.headers.host 将是 localhost:8000 并且它与你的 options 上的任何内容都不匹配

标签: javascript node.js proxy supertest node-http-proxy


【解决方案1】:

如果您希望用户键入 foo.com,请转到 http://website.com:8001,您需要为 foo.com 设置一个虚拟主机,例如 Nginx。

Nginx 将为 foo.com 和 bar.com 托管虚拟主机,这将是 Node.js 应用程序的“代理通行证”。

当用户访问 foo.com 时,它会获取您的 Nginx 服务器,该服务器会将请求传递给您的 Node 应用程序,该应用程序会将请求代理到您在选项中设置的相对 URL。

如果你需要,我可以给你所需的 Nginx 配置。

Nginx 虚拟主机配置:

server {
    listen 80;

    server_name foo.com bar.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

当然你需要将 foo.com 和 bar.com DNS 指向 Nginx/Node 服务器。 Node 应用程序非常好。你不再需要任何东西了。启动 Nginx 和 Node 就完成了。

【讨论】:

  • Michelem 感谢您的支持,已投票! ,你能提供我可以测试的完整代码吗,(我对这个主题很陌生......) ngix 是节点的一部分,我可以使用一些模块吗?由于我在 RT 期间需要它,我可以通过代码配置它吗?
  • 顺便说一句,你不认为 http-proxy 应该做服务器代理吗?至少从他们处理这个的文档中,我的问题是我没有找到如何使用它的好例子......
  • Nginx 是一个在您的域上接受请求的 Web 服务器,您也可以在没有 Nginx 的情况下使用 Node.js 完成所有操作,请看这个:stackoverflow.com/questions/9368794/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2018-10-03
  • 2023-03-06
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多