http 代理中间件中的路径重写不起作用

问题描述 投票:0回答:1

GET /用户-api 用户代理 - 原始 URL:/users-api 用户代理 - 转发到:http://localhost/ 连4000都没有达到 如果我喜欢 目标:'http://localhost:4000/api/users', 直接设置目标就可以了

// Create proxy middleware for users API
const usersProxy = createProxyMiddleware({
    target: 'http://localhost:4000',
    changeOrigin: true,
    pathRewrite: {
        '^/users-api': '/api/users'
    },
    on: {
        proxyReq: (proxyReq, req, res) => {
            proxyReq.setHeader('X-Proxy-Service', 'users');
            const targetUrl = `${proxyReq.protocol}//${proxyReq.host}${proxyReq.path}`;
            console.log('Users Proxy - Original URL:', req.originalUrl);
            console.log('Users Proxy - Forwarding to:', targetUrl);
        },
        proxyRes: (proxyRes, req, res) => {
            proxyRes.headers['x-proxied-by'] = 'users-proxy';
        },
        error: (err, req, res) => {
            console.error('Users Proxy Error:', err);
            res.status(500).json({ 
                error: 'Users Proxy Error', 
                message: err.message 
            });
        }
    }
});
// Apply proxy middlewares to specific routes
app.use('/users-api',usersProxy);

**GET /users-api 用户代理 - 原始 URL:/users-api 用户代理 - 转发到:http://localhost/ 如果我确实喜欢目标:'http://localhost:4000,它甚至不会达到 4000 /api/users',直接设置目标就可以了**

node.js express port http-proxy
1个回答
0
投票

尝试自定义重写

pathRewrite: function (path, req) { return path.replace('/users-api', '/api/users') }
© www.soinside.com 2019 - 2024. All rights reserved.