Commit f52afc1d authored by indexzero's avatar indexzero Committed by Cédric de Saint Martin

[fix minor] Correctly set x-forwarded-proto in WebSocket requests

parent f1a8b573
...@@ -131,28 +131,29 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) { ...@@ -131,28 +131,29 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
// * `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) {
if (req.headers['x-forwarded-for']){ if (req.headers['x-forwarded-for']){
var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress; var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress;
req.headers['x-forwarded-for'] += addressToAppend; req.headers['x-forwarded-for'] += addressToAppend;
} else { }
else {
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress; req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress;
} }
if (req.headers['x-forwarded-port']){ if (req.headers['x-forwarded-port']){
var portToAppend = "," + req.connection.remotePort || req.socket.remotePort; var portToAppend = "," + req.connection.remotePort || req.socket.remotePort;
req.headers['x-forwarded-port'] += portToAppend; req.headers['x-forwarded-port'] += portToAppend;
} else { }
else {
req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort; req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort;
} }
if (req.headers['x-forwarded-proto']){ if (req.headers['x-forwarded-proto']){
var protoToAppend = "," + req.connection.pair ? 'https' : 'http'; var protoToAppend = "," + req.connection.pair ? 'https' : 'http';
req.headers['x-forwarded-proto'] += protoToAppend; req.headers['x-forwarded-proto'] += protoToAppend;
} else { }
else {
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http'; req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
} }
} }
// //
...@@ -420,28 +421,29 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer) ...@@ -420,28 +421,29 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
// * `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) {
if (req.headers['x-forwarded-for']){ if (req.headers['x-forwarded-for']){
var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress; var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress;
req.headers['x-forwarded-for'] += addressToAppend; req.headers['x-forwarded-for'] += addressToAppend;
} else { }
else {
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress; req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress;
} }
if (req.headers['x-forwarded-port']){ if (req.headers['x-forwarded-port']){
var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort; var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort;
req.headers['x-forwarded-port'] += portToAppend; req.headers['x-forwarded-port'] += portToAppend;
} else { }
else {
req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort; req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort;
} }
if (req.headers['x-forwarded-proto']){ if (req.headers['x-forwarded-proto']){
var protoToAppend = "," + req.connection.pair ? 'https' : 'http'; var protoToAppend = "," + req.connection.pair ? 'wss' : 'ws';
req.headers['x-forwarded-proto'] += protoToAppend; req.headers['x-forwarded-proto'] += protoToAppend;
} else {
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
} }
else {
req.headers['x-forwarded-proto'] = req.connection.pair ? 'wss' : 'ws';
}
} }
// //
......
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