Commit 76aa9821 authored by Dominic Tarr's avatar Dominic Tarr

Merge pull request #73 from DanBUK/master

This adds a flag to ProxyRequest to disable the setting of x-forwarded-[for|port|proto]
(will change default to true in next commit)
parents efa17ef6 ee3506a8
...@@ -328,6 +328,7 @@ HttpProxy.prototype.close = function () { ...@@ -328,6 +328,7 @@ HttpProxy.prototype.close = function () {
// options.host {string} Host of the proxy target. // options.host {string} Host of the proxy target.
// options.buffer {Object} Result from `httpProxy.buffer(req)` // options.buffer {Object} Result from `httpProxy.buffer(req)`
// options.https {Object|boolean} Settings for https. // options.https {Object|boolean} Settings for https.
// options.enableXForwarded {boolean} Don't clobber x-forwarded headers to allow layered proxies.
// //
HttpProxy.prototype.proxyRequest = function (req, res, options) { HttpProxy.prototype.proxyRequest = function (req, res, options) {
var self = this, errState = false, location, outgoing, protocol, reverseProxy; var self = this, errState = false, location, outgoing, protocol, reverseProxy;
...@@ -340,6 +341,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { ...@@ -340,6 +341,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
options = options || {}; options = options || {};
options.host = options.host || this.target.host; options.host = options.host || this.target.host;
options.port = options.port || this.target.port; options.port = options.port || this.target.port;
options.enableXForwarded = options.enableXForwarded || false;
// //
// Check the proxy table for this instance to see if we need // Check the proxy table for this instance to see if we need
...@@ -379,9 +381,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) { ...@@ -379,9 +381,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
// * `x-forwarded-proto`: Protocol of the original request // * `x-forwarded-proto`: Protocol of the original request
// * `x-forwarded-port`: Port of the original request. // * `x-forwarded-port`: Port of the original request.
// //
if (options.enableXForwarded == true) {
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress; req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress;
req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort; req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort;
req.headers['x-forwarded-proto'] = res.connection.pair ? 'https' : 'http'; req.headers['x-forwarded-proto'] = res.connection.pair ? 'https' : 'http';
}
// //
// Emit the `start` event indicating that we have begun the proxy operation. // Emit the `start` event indicating that we have begun the proxy operation.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment