С одного сервиса отправляю запрос на адрес например
gateway:3000/users, проксирую с помошью библиотеки
http-proxy-middleware на
webamqplib:5557.
Работает, если использую функцию
users.module.ts// reverse-proxy-middlewareBuilder.ts
import { Request, Response, NextFunction } from 'express';
import { createProxyMiddleware, Filter, Options, RequestHandler } from 'http-proxy-middleware';
import { MiddlewareBuilder } from '@nestjs/core';
export function ReverseProxyMiddleware(req: Request, res: Response, next: NextFunction) {
const proxy = createProxyMiddleware(req.path, {
target: 'http://webamqplib:5557/',
changeOrigin: true,
})
proxy(req, res, next)
}
все хорошо отрабатывает, в консоле этого сервиса [HPM] Proxy created: /users ->
webamqplib:5557
Модуль users.module.ts// users.module.ts
import { MiddlewareConsumer, Module, NestModule, Param } from '@nestjs/common';
import { ReverseProxyMiddleware } from 'src/reverse-proxy.middleware';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
@Module({
controllers: [UsersController],
providers: []
})
export class UsersModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(ReverseProxyMiddleware)
.forRoutes(UsersController)
}
}
Не могу понять, почему не отрабатывает через class
import { Request, Response, NextFunction } from 'express';
import { Injectable, NestMiddleware } from '@nestjs/common';
import { createProxyMiddleware, Filter, Options, RequestHandler } from 'http-proxy-middleware';
import configs from './config/config.json';
@Injectable()
export class ReverseProxyMiddleware implements NestMiddleware {
private proxy(path: Filter | Options, option?: Options): RequestHandler {
return createProxyMiddleware(path, option)
}
use(req: Request, res: Response, next: () => void) {
this.proxy(
req.path,
{
target: configs.users.target,
changeOrigin: true
}
)
next()
}
}
При запросе
gateway:3000/users в консоле все так же выводится [HPM] Proxy created: /users ->
webamqplib:5557, как и с помощью функции, но редиректа не происходить на адресс как в первом примере