2017-12-17 7 views
2

Node.js 8.9.1, hapi 16.6.2, h2o2 5.2.0Serve öffentliche Dateien mit Reverse-Proxy

Es gibt eine reverse proxy Route eine externe API zu verwenden.

{ 
    method: '*', 
    path: '/api/v2/{param*}', 
    handler: { 
     proxy: { 
     host: 'host.net', 
     port: 8100, 
     protocol: 'http', 
     passThrough: true, 
     localStatePassThrough: true 
     } 
    } 
    } 

Ich muss AngulaJS UI auf dem gleichen Node.js Server dienen. Die folgende Route wird hinzugefügt.

{ 
    method: 'GET', 
    path: '/{param*}', 
    handler: { 
     directory: { 
     path: 'public' 
     } 
    } 
    } 

Jetzt sehe ich UI. Aber ich kann nicht Daten von der externen API bekommen mehr

curl -XGET localhost:8001/api/v2/birds 
{"statusCode":404,"error":"Not Found","message":"Not Found"} 

Wie kann ich beide UI dienen und Reverse-Proxy auf dem gleichen Server Node.js?

Antwort

2

Ich habe es funktioniert, indem Sie die Reverse-Proxy-Route spezifischer machen. Jetzt habe ich drei Reverse-Proxy-Routen statt einer.

{ 
    method: 'GET', 
    path: '/api/v2/{param*}', 
    handler: { 
     proxy: { 
     host: 'host.net', 
     port: 8100, 
     protocol: 'http', 
     passThrough: true, 
     localStatePassThrough: true 
     } 
    } 
    }, 
    { 
    method: 'POST', 
    path: '/api/v2/{param*}', 
    handler: { 
     proxy: { 
     host: 'host.net', 
     port: 8100, 
     protocol: 'http', 
     passThrough: true, 
     localStatePassThrough: true 
     } 
    } 
    }, 
    { 
    method: 'PUT', 
    path: '/api/v2/{param*}', 
    handler: { 
     proxy: { 
     host: 'host.net', 
     port: 8100, 
     protocol: 'http', 
     passThrough: true, 
     localStatePassThrough: true 
     } 
    } 
    } 
Verwandte Themen