根据 URL 路径创建代理

Create proxy according URL path

本文关键字:代理 创建 路径 URL 根据      更新时间:2023-09-26

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

如果您希望

用户键入 foo.com 转到 http://website.com:8001 则需要设置一个虚拟主机,例如Nginx进行 foo.com。

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,你就完成了。