Proxyserver mit Node.js auf Heroku

Ich versuche, einen Proxyserver mit Node.js auf Heroku mithilfe von http-proxy aufzubauen. Vor Ort funktioniert alles einwandfrei, aber ich habe einige Probleme mit Heroku.

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

settings = {
  "localhost": process.env.LOCALHOST,
  "devices":   process.env.DEVICES_URI
}

var options = { router: { } }
options.router[settings.localhost + '/devices']  = settings.devices + '/devices';

var port   = process.env.PORT || 8000;
var server = httpProxy.createServer(options).listen(port);

Wie Sie im Beispiel sehen können, habe ich ein Routing-Objekt gesetzt. Ich sage Folgendes: Wenn eine Anfrage mit '/ devices' übereinstimmt, leiten Sie die Anfrage an den Gerätedienst weiter. (identifiziert durch die Umgebungsvariable DEVICES_URI)

In der Entwicklung habe ich gesetzt

LOCALHOST = 'localhost'DEVICES_URI = 'http: // localhost: 3000'

Dies bedeutet, dass alle Anfragen an localhost: 8000 / devices an localhost: 3000 / devices weitergeleitet werden, was ich möchte. Alles funktioniert perfekt.

Das Problem liegt in der Produktion. Ich erhalte einen Timeout-Fehler, der bei jeder Anforderung mehrmals wiederholt wird.

2012-08-23T20:18:20+00:00 heroku[router]: Error H12 (Request timeout) -> GET lelylan-api.herokuapp.com/devices dyno=web.1 queue= wait= service=30000ms status=503 bytes=0

In der Produktion werden die Umgebungsvariablen auf die App-Namen konfiguriert.

LOCALHOST = 'lelylan-api.herokuapp.com'DEVICES_URI = 'lelylan-devices.herokuapp.com/'

Ich glaube, ich liege falsch, aber nach dem ganzen Tag bin ich immer noch nicht in der Lage, es herauszufinden.

Aktualisieren

Ich habe meine Tests fortgesetzt und festgestellt, dass der Proxy nicht in der Lage ist, den Proxy-Dienst zu erreichen, wodurch ich völlig gestoppt werde.

In der Entwicklung habe ich festgelegt:

LOCALHOST = 'localhost'DEVICES_URI = 'lelylan-devices.herokuapp.com/'

Wenn ich anrufehttp://lelylan-devices.herokuapp.com/devices alles funktioniert gut

Wenn ich localhost anrufe: 8000 / Geräte (was aufhttp://lelylan-devices.herokuapp.com/devices) Heroku sagt mir, dass es keine solche App gibt. Ich vermute, das Problem liegt irgendwie im Routingsystem.

Hier können Sie auf die zugreifenQuellcode. Hier die Konfigurationsvarianten für Heroku.

NODE_ENV      => production
LOCALHOST     => lelylan-api.herokuapp.com
DEVICES_URI   => lelylan-devices.herokuapp.com
TYPES_URI     => lelylan-types.herokuapp.com
LOCATIONS_URI => lelylan-locations.herokuapp.com

Antworten auf die Frage(2)

Ihre Antwort auf die Frage