تنظیم TrustedProxies برای فریم‌ورک Hapi


برای تنظیم این قابلیت در برنامه خود، می‌توانید از نمونه قطعه کد زیر، استفاده کنید:

کپی
const Hapi = require('@hapi/hapi');

const init = async () => {
  const server = Hapi.server({
    port: 3000,
    host: '0.0.0.0',
    routes: {
      state: {
        parse: true, 
        failAction: 'ignore'
      }
    }
  });

  await server.register(require('@hapi/inert'));

  server.ext('onRequest', (request, h) => {
    const xForwardedFor = request.headers['x-forwarded-for'];
    if (xForwardedFor) {
      const ips = xForwardedFor.split(',').map(ip => ip.trim());
      request.info.remoteAddress = ips[0];
    }
    return h.continue;
  });

  server.route({
    method: 'GET',
    path: '/',
    handler: (request, h) => {
      const ip = request.info.remoteAddress;
      return `Client IP: ${ip}`;
    }
  });

  await server.start();
  console.log('Server running on %s', server.info.uri);
};

process.on('unhandledRejection', (err) => {
  console.log(err);
  process.exit(1);
});

init();