2016-04-20 15 views
2

Ich habe einen Knoten-Server und ich bin meine Proxy-Anfragen mit http-proxy-middleware, ähnlich wie in this post passiert. Wenn ich einen Proxyserver für einen echten Produktionsserver verwende, funktioniert alles einwandfrei, aber wenn ich den Proxy auf einen lokalen Server zeige, funktioniert er einfach nicht.Node http-Proxy-Middleware funktioniert nicht mit lokalen Servern als targert

Dies ist mein Code:

app.use('/_api', proxy({target: 'http://localhost:9000', changeOrigin: true}));

Der Server, auf:

http://localhost:9000/hello funktioniert (ich es von meinem Browser zugreifen kann), aber, wenn ich versuche, es für den Zugriff auf von meinem eigenen Server, wie folgt aus:

http://localhost:3000/_api/hello

ich erhalte:

Kann nicht GET/_api/hallo

Wenn ich ersetzen localhost: 9000 mit realen Server, funktioniert alles ...

Antwort

3

Ihre proxied Anfrage den lokalen Server mit der ursprünglichen Anforderung versucht, zuzugreifen Pfad.

Eg, wenn Sie anfordern

http://localhost:3000/_api/hello

Ihre Proxy

http://localhost:9000/_api/hello

Der _api/hello Pfad auf Ihrem localhost:9000 existiert nicht zuzugreifen versucht, die durch die Cannot GET /_api/hello Fehler angezeigt wird .

Sie benötigen proxied Anfrage Pfade neu zu schreiben den _api Teil zu entfernen:

app.use('/_api', proxy({ 
    target: 'http://localhost:9000', 
    changeOrigin: true, 
    pathRewrite: { 
     '^/_api' : '/' 
    } 
})); 
+0

Das war genau das, was ich brauchte, danke! –