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