NodeJS实现代理转发
在Node.js中,可以使用http
和http-proxy-middleware
库来实现简单的代理转发。以下是一个示例代码:
首先,确保安装了所需的库:
npm install http-proxy-middleware
然后,使用以下代码创建一个简单的代理服务器:
const http = require('http');
const { createProxyMiddleware } = require('http-proxy-middleware');
const proxy = createProxyMiddleware({
target: 'http://example.com', // 目标服务器地址
changeOrigin: true, // 改变源地址,使目标服务器认为请求来自代理服务器
pathRewrite: function (path, req) {
// 重写路径,去除代理服务器地址部分
return path.replace(/^\/proxy/, '');
}
});
const server = http.createServer(function(req, res) {
// 检查请求路径是否需要代理
if (req.url.startsWith('/proxy')) {
// 调用代理中间件处理请求
proxy(req, res, () => {
// 如果代理中间件无法处理请求,则返回404
res.writeHead(404);
res.end('Not Found');
});
} else {
// 如果不是代理路径,则直接响应
res.write('Not a proxy request');
res.end();
}
});
server.listen(3000);
console.log('Proxy server is running on http://localhost:3000/proxy');
在上述代码中,我们创建了一个HTTP服务器,它会监听3000端口。当请求路径以/proxy
开头时,该请求会被转发到http://example.com
,并且通过changeOrigin
选项修改请求头,使得目标服务器不会认为请求来自原始客户端的IP。如果请求不是代理请求,它将返回一个简单的响应。
评论已关闭