diff --git a/lib/http-proxy/common.js b/lib/http-proxy/common.js index 58c5203..1698c1a 100644 --- a/lib/http-proxy/common.js +++ b/lib/http-proxy/common.js @@ -73,3 +73,10 @@ common.setupSocket = function(socket) { return socket; }; + +common.getPort = function(req) { + var res = req.headers.host.match(/:(\d+)/); + return res ? + res[1] : + req.connection.pair ? '443' : '80' ; +} diff --git a/lib/http-proxy/passes/web-incoming.js b/lib/http-proxy/passes/web-incoming.js index 68d4e1d..2b14c87 100644 --- a/lib/http-proxy/passes/web-incoming.js +++ b/lib/http-proxy/passes/web-incoming.js @@ -65,7 +65,7 @@ web_o = Object.keys(web_o).map(function(pass) { var values = { for : req.connection.remoteAddress || req.socket.remoteAddress, - port : req.connection.remotePort || req.socket.remotePort, + port : common.getPort(req), proto: req.isSpdy ? 'https' : (req.connection.pair ? 'https' : 'http') }; diff --git a/lib/http-proxy/passes/ws-incoming.js b/lib/http-proxy/passes/ws-incoming.js index 99a6f87..720ac27 100644 --- a/lib/http-proxy/passes/ws-incoming.js +++ b/lib/http-proxy/passes/ws-incoming.js @@ -56,7 +56,7 @@ var passes = exports; var values = { for : req.connection.remoteAddress || req.socket.remoteAddress, - port : req.connection.remotePort || req.socket.remotePort, + port : common.getPort(req), proto: req.connection.pair ? 'wss' : 'ws' };