Servidor proxy con Node.js en Heroku

Estoy tratando de construir un servidor proxy con Node.js en Heroku usando http-proxy. Todo funciona bien a nivel local, pero estoy teniendo algunos problemas con 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);

Como puede ver en el ejemplo, configuro un objeto de enrutamiento. Lo que digo es esto: cuando una solicitud coincide con '/ devices', entonces dirija la solicitud al servicio del dispositivo. (identificada por la variante ambiental DEVICES_URI)

En desarrollo me puse

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

Esto significa que todas las solicitudes que se envían a localhost: 8000 / devices están dirigidas a localhost: 3000 / devices, que es lo que quiero. Todo funciona perfectamente.

El problema está en producción. Me da un error de tiempo de espera repetido varias veces para cada solicitud.

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

En la producción, las variables del entorno están configuradas para los nombres de las aplicaciones.

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

Supongo que me equivoco en algunas configuraciones, pero después de todo el día todavía no puedo resolverlo.

Actualizar

He continuado con mis pruebas y he visto que el proxy no puede alcanzar el servicio de proxy que me detiene por completo.

En desarrollo me puse:

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

Si llamohttp://lelylan-devices.herokuapp.com/devices todo funciona bien

Si llamo a localhost: 8000 / devices (que apunta ahttp://lelylan-devices.herokuapp.com/devices) Heroku me dice que no hay tal aplicación. Supongo que el problema está de alguna manera en el sistema de enrutamiento.

Aquí se puede acceder en lacódigo fuente. Aquí las configuraciones de vars para 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

Respuestas a la pregunta(2)

Su respuesta a la pregunta