mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
Merge pull request #163 from samyakbhuta/master
Allows node-http-proxy to append new values to existing headers for incoming "x-forward-for","x-forward-proto" and "x-forward-port"
This commit is contained in:
commit
e2dccbca48
@ -122,17 +122,36 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Add common proxy headers to the request so that they can
|
// Add common proxy headers to the request so that they can
|
||||||
// be availible to the proxy target server:
|
// be availible to the proxy target server. If the proxy is
|
||||||
|
// part of proxy chain it will append the address:
|
||||||
//
|
//
|
||||||
// * `x-forwarded-for`: IP Address of the original request
|
// * `x-forwarded-for`: IP Address of the original request
|
||||||
// * `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 (this.enable.xforward && req.connection && req.socket) {
|
if (this.enable.xforward && req.connection && req.socket) {
|
||||||
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress;
|
|
||||||
req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort;
|
if (req.headers['x-forwarded-for']){
|
||||||
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
|
var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress;
|
||||||
|
req.headers['x-forwarded-for'] += addressToAppend;
|
||||||
|
} else {
|
||||||
|
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.headers['x-forwarded-port']){
|
||||||
|
var portToAppend = "," + req.connection.remotePort || req.socket.remotePort;
|
||||||
|
req.headers['x-forwarded-port'] += portToAppend;
|
||||||
|
} else {
|
||||||
|
req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.headers['x-forwarded-proto']){
|
||||||
|
var protoToAppend = "," + req.connection.pair ? 'https' : 'http';
|
||||||
|
req.headers['x-forwarded-proto'] += protoToAppend;
|
||||||
|
} else {
|
||||||
|
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -299,6 +318,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
|
|||||||
// `req` write it to the `reverseProxy` request.
|
// `req` write it to the `reverseProxy` request.
|
||||||
//
|
//
|
||||||
req.on('data', function (chunk) {
|
req.on('data', function (chunk) {
|
||||||
|
|
||||||
if (!errState) {
|
if (!errState) {
|
||||||
var flushed = reverseProxy.write(chunk);
|
var flushed = reverseProxy.write(chunk);
|
||||||
if (!flushed) {
|
if (!flushed) {
|
||||||
@ -375,16 +395,36 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Add common proxy headers to the request so that they can
|
// Add common proxy headers to the request so that they can
|
||||||
// be availible to the proxy target server:
|
// be availible to the proxy target server. If the proxy is
|
||||||
|
// part of proxy chain it will append the address:
|
||||||
//
|
//
|
||||||
// * `x-forwarded-for`: IP Address of the original request
|
// * `x-forwarded-for`: IP Address of the original request
|
||||||
// * `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 (this.enable.xforward && req.connection && req.connection.socket) {
|
if (this.enable.xforward && req.connection && req.connection.socket) {
|
||||||
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress;
|
|
||||||
req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort;
|
if (req.headers['x-forwarded-for']){
|
||||||
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
|
var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress;
|
||||||
|
req.headers['x-forwarded-for'] += addressToAppend;
|
||||||
|
} else {
|
||||||
|
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.headers['x-forwarded-port']){
|
||||||
|
var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort;
|
||||||
|
req.headers['x-forwarded-port'] += portToAppend;
|
||||||
|
} else {
|
||||||
|
req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.headers['x-forwarded-proto']){
|
||||||
|
var protoToAppend = "," + req.connection.pair ? 'https' : 'http';
|
||||||
|
req.headers['x-forwarded-proto'] += protoToAppend;
|
||||||
|
} else {
|
||||||
|
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user