根据 URL 路径创建代理
Posted
技术标签:
【中文标题】根据 URL 路径创建代理【英文标题】:Create proxy according URL path 【发布时间】:2015-09-06 05:37:03 【问题描述】:我需要根据来自浏览器的一些 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 时,您将路由(代理)到具有不同路径的新服务器,如选项中所述。
【问题讨论】:
那么问题出在哪里? 你不能放置 localhost:8000 并被重定向,因为req.headers.host
将是 localhost:8000 并且它与你的 options
上的任何内容都不匹配
【参考方案1】:
如果您希望用户键入 foo.com,请转到 http://website.com:8001,您需要为 foo.com 设置一个虚拟主机,例如 nginx。
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 就完成了。
【讨论】:
Michelem 感谢您的支持,已投票! ,你能提供我可以测试的完整代码吗,(我对这个主题很陌生......) ngix 是节点的一部分,我可以使用一些模块吗?由于我在 RT 期间需要它,我可以通过代码配置它吗? 顺便说一句,你不认为 http-proxy 应该做服务器代理吗?至少从他们处理这个的文档中,我的问题是我没有找到如何使用它的好例子...... Nginx 是一个在您的域上接受请求的 Web 服务器,您也可以在没有 Nginx 的情况下使用 Node.js 完成所有操作,请看这个:***.com/questions/9368794/…以上是关于根据 URL 路径创建代理的主要内容,如果未能解决你的问题,请参考以下文章
nginx代理转发url接口请求路径到spring boot后端实现真正响应
Nginx的location匹配规则-根据url 路径重定向到不同的IP