mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
Allow forwarding for x-forwarded-[for|port|proto] to enabled layering of http-proxies.
This commit is contained in:
parent
baf0b9e25a
commit
404818b1dc
@ -328,6 +328,7 @@ HttpProxy.prototype.close = function () {
|
||||
// options.host {string} Host of the proxy target.
|
||||
// options.buffer {Object} Result from `httpProxy.buffer(req)`
|
||||
// options.https {Object|boolean} Settings for https.
|
||||
// options.allow_xforwarded_headers {boolean} Don't clobber x-forwarded headers to allow layered proxies.
|
||||
//
|
||||
HttpProxy.prototype.proxyRequest = function (req, res, options) {
|
||||
var self = this, errState = false, location, outgoing, protocol, reverseProxy;
|
||||
@ -340,6 +341,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
|
||||
options = options || {};
|
||||
options.host = options.host || this.target.host;
|
||||
options.port = options.port || this.target.port;
|
||||
options.allow_xforwarded_headers = options.allow_xforwarded_headers || false;
|
||||
|
||||
//
|
||||
// Check the proxy table for this instance to see if we need
|
||||
@ -379,9 +381,11 @@ HttpProxy.prototype.proxyRequest = function (req, res, options) {
|
||||
// * `x-forwarded-proto`: Protocol of the original request
|
||||
// * `x-forwarded-port`: Port of the original request.
|
||||
//
|
||||
if (options.allow_xforwarded_headers == true) {
|
||||
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-proto'] = res.connection.pair ? 'https' : 'http';
|
||||
}
|
||||
|
||||
//
|
||||
// Emit the `start` event indicating that we have begun the proxy operation.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user