2014-03-14 11 views
5

Ich möchte Reverse-Proxy eine vorhandene Anwendung, die Websockets verwendet, aber Anwendung Middleware verwenden, um eine Autorisierungsschicht vor der App zu implementieren.Knoten-http-Proxy Websocket Proxying & Middleware

Knoten-http-Proxy wirbt diese beiden Funktionen, aber ich kann nicht scheinen, kombinieren Sie sie.

Reverse-Proxy-WebSockets gut funktioniert: obwohl

var httpProxy = require('http-proxy'); 

httpProxy.createProxyServer({ 
    target: 'http://127.0.0.1:8888', // where do we want to proxy to? 
    ws : true // proxy websockets as well 
}).listen(3000); 

Als ich im middleware examples einen Blick darauf werfen, sie scheinen alle für den Server zu verwenden, zu verbinden, und an diesem Punkt der websocket Unterstützung scheint zu verschwinden. z.B.

var httpProxy = require('http-proxy'), 
    connect = require('connect'); 

var proxy = httpProxy.createProxyServer({ 
    target: 'http://localhost:8888', 
    ws: true 
}); 

connect.createServer(
    connect.compress({ 
    // Pass to connect.compress() the options 
    // that you need, just for show the example 
    // we use threshold to 1 
    threshold: 1 
    }), 
    function (req, res) { 
    proxy.web(req, res); 
    } 
).listen(3000); 

Ist das eine bekannte Einschränkung, oder gibt es eine andere Art und Weise WebSocket-Reverse-Proxy und miteinander zu kombinieren?

+0

haben Sie es geschafft, es herauszufinden? – jreptak

Antwort

0

Sie könnten http-proxy-middleware als Middleware verwenden. Es wird Proxy http-Anfragen und WebSockets:

var http   = require('http'); 
var connect   = require('connect'); 
var proxyMiddleware = require('http-proxy-middleware'); 

var proxy = proxyMiddleware('http://localhost:8888', { 
       changeOrigin: true, // for vhosted sites 
       ws: true 
      }); 

var app = connect(); 
app.use(proxy);      // <- add the proxy to connect 

var server = http.createServer(app).listen(3000); 

Kasse die Dokumentation für weitere Konfigurationsoptionen:

https://www.npmjs.com/package/http-proxy-middleware

+0

betrachte ich bin ein Proxy-Server glänzend, die Gzip-Komprimierung nicht unterstützt. Wie würde ich hier die Komprimierung mit http-Proxy-Middleware aktivieren? Ich habe einen ähnlichen Anwendungsfall, wie du ihn programmiert hast –

Verwandte Themen