javascript - 根据URL路径创建代理

标签 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 时,您将路由(代理)到具有不同路径的新服务器,如选项中所述。

最佳答案

如果您希望用户输入 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,就完成了。

关于javascript - 根据URL路径创建代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30951650/

相关文章:

node.js - 有没有办法处理 Electron 中的路线?

tomcat - 如何设置tomcat充当代理服务器?

Python 请求库结合了 HTTPProxyAuth 和 HTTPBasicAuth

javascript - 正则表达式:用于限制字母数字字符的总长度,包括所有组

c# - 防止在 asp.net 输入字段中回车

javascript - 循环从 val() 获取数据

xml - Node SOAP : How to create a complex message with specific attributes?

javascript - 将 php 创建的数组添加到 javascript 中

node.js - mqtt.js Node - 通过消息传递 qos

apache - Apache、Tomcat、端口 80、8080 和其他东西的组合