nestjs:nginx反向代理服务器后如何获取请求的ip地址

这篇具有很好参考价值的文章主要介绍了nestjs:nginx反向代理服务器后如何获取请求的ip地址。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

        如题

参考:

        nodejs+nginx获取真实ip-腾讯云开发者社区-腾讯云

        「转」从限流谈到伪造 IP nginx remote_addr

        

解决办法:

1.设置nginx

        对于代理部分,对http header添加Host、X-Real-IP、X-Forwarded-For(最重要)

        

		location /api {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			
			proxy_pass   http://localhost:5000;
			proxy_redirect off;
        }

2.nestjs使用express,启用trust proxy

        需要注意,await NestFactory.create<NestExpressApplication>(AppModule);

        需要明确使用NestExpressApplication,虽然nestjs默认express,但是为了调用app.set('trust proxy', true),必须显示声明。

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';

async function bootstrap() {
  const app: NestExpressApplication = await NestFactory.create<NestExpressApplication>(AppModule);
  app.set('trust proxy', true)  //此接口NestExpressApplication才有
  app.use(new HttpRequestMiddleware().use);
  await app.listen(3000);
}
bootstrap().then();

3.可以在Request.ip中获取到值了文章来源地址https://www.toymoban.com/news/detail-647945.html

/**
 * 自定义请求信息日志记录中间件
 */
import { NextFunction, Request, Response } from 'express';
import { NestMiddleware } from '@nestjs/common';

export class HttpRequestMiddleware implements NestMiddleware {
  use(req: Request, res: Response, next: NextFunction) {
    next();

    // 组装日志信息
    const logFormat = {
      httpType: 'Request',
      ip: req.ip.split(':').pop(),
      reqUrl: `${req.headers.host}${req.originalUrl}`,
      reqMethod: req.method,
      httpCode: res.statusCode,
      params: req.params,
      query: req.query,
      body: req.body,
    };

    console.log(JSON.stringify(logFormat));
  }
}

到了这里,关于nestjs:nginx反向代理服务器后如何获取请求的ip地址的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/qq1090504117/article/details/132260632

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包