根据URL路径创建代理

时间:2015-06-20 07:54:33

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

我需要根据来自浏览器的某个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中输入时,您将路由(代理)到具有不同路径的新服务器,如选项中所述。

1 个答案:

答案 0 :(得分:1)

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

Nginx将托管foo.com和bar.com的虚拟主机,这将是一个"代理通行证"到Node.js app。

当用户访问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,你就完成了。