我需要根据来自浏览器的一些 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/