Simple proxy middleware for connect/express
JavaScript
Latest commit 510539b May 9, 2014 @camshaft camshaft fix travis badge
Permalink
Failed to load latest commit information.
test Fix trailing slash bug Jul 15, 2013
.gitignore Initial commit Jan 23, 2013
.travis.yml Remove 0.6.0 from travis tests Mar 24, 2013
README.md fix travis badge May 9, 2014
index.js add onrequest and onresponse options May 9, 2014
package.json release 0.5.11 May 9, 2014

README.md

simple-http-proxy Build Status

Simple proxy middleware for connect/express

Usage

Create an http app

/**
 * Module dependencies
 */
var express = require('express');
var proxy = require('simple-http-proxy');

/**
 * Expose the app
 */
var app = module.exports = express();

/**
 * Mount the proxy middleware
 */
app.use('/api', proxy('http://my.other.host.com/path-to-proxy'));

Make the request

$ curl http://localhost:5000/api

<h1>Welcome to my.other.host.com/path-to-proxy</h1>

You can also specify some options as a second parameter

app.use('/api', proxy('http://my.other.host.com/path-to-proxy', opts));

Options

cookies

Disable sending cookies by passing false; on by deafult.

xforward

Setting this to true will set x-forwarded-proto, x-forwarded-host, x-forwarded-port and x-forwarded-path headers.

Passing an object will override the header names:

{
  proto: 'x-orig-proto',
  host: 'x-orig-host',
  port: 'x-orig-port',
  path: 'x-orig-path'
}

timeout

A positive millisecond value for the timeout of the request. Defaults to 10000 (10s).

Setting it to false will disable the timeout.

onrequest

A function to be called on each request. The first parameter will be the options object for the http request. The second will be the request object.

This can be used to change any of the http options for a given request.

onresponse

A function to be called on each response. The first parameter will be the incoming message for a given request. The second will be the server response object.

If this function returns true the default pipe will not be used and will be up to the onresponse function to implement that behavior. This is useful for rewriting responses that are sent to the client.

Tests

$ npm test