Simple HTTP Request Forwarder

0.1.3 · abandoned · verified Wed Apr 22

http-forward is a minimalist Node.js library designed to proxy incoming HTTP requests to a specified target URL. It functions by attaching a `target` property to the `req.forward` object, allowing for basic request redirection within a Node.js `http.createServer` instance. This package is extremely lightweight and relies solely on Node.js's built-in `http` module. However, with its last publish date over ten years ago (version 0.1.3) and no apparent ongoing development, it is considered abandoned. It does not support modern JavaScript module syntax (ESM), HTTP/2, or contemporary security practices, and has no release cadence. Users are strongly advised to consider actively maintained and more feature-rich alternatives such as `http-proxy` or `http-proxy-middleware` for any new or existing projects requiring HTTP proxying in Node.js.

Common errors

Warnings

Install

Imports

Quickstart

This example sets up a simple proxy server on port 3000 that forwards all incoming HTTP requests to a target server running on port 9000.

const http = require('http');
const forward = require('http-forward');

// A basic target server to forward requests to
const targetServer = http.createServer((req, res) => {
  console.log(`Target server received: ${req.method} ${req.url}`);
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello from the target server!');
});
targetServer.listen(9000, () => {
  console.log('Target server listening on port 9000');
});

// The proxy server that uses http-forward
const proxyServer = http.createServer((req, res) => {
  console.log(`Proxy server received: ${req.method} ${req.url}`);
  // Define the target for http-forward
  req.forward = { target: 'http://localhost:9000' };
  forward(req, res, (err) => {
    if (err) {
      console.error('Proxy error:', err.message);
      res.writeHead(500, { 'Content-Type': 'text/plain' });
      res.end('Proxy Error');
    }
  });
});

proxyServer.listen(3000, () => {
  console.log('Proxy server listening on port 3000. Try curl http://localhost:3000');
});

view raw JSON →