Servidor Proxy com Node.js no Heroku

Estou tentando construir um servidor proxy com o Node.js no Heroku usando http-proxy. Tudo funciona bem localmente, mas estou tendo alguns problemas em 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 você pode ver no exemplo eu configurei um objeto de roteamento. O que eu digo é isto: quando uma solicitação corresponde a '/ devices', direcione a solicitação para o serviço do dispositivo. (identificado pelo DEVICES_URI environmental var)

Em desenvolvimento eu defini

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

Isso significa que todas as solicitações que vão para localhost: 8000 / devices são intermediadas por proxy para localhost: 3000 / devices, que é o que eu quero. Tudo funciona perfeitamente.

O problema está em produção. Isso me dá um erro de tempo limite repetido várias vezes para cada solicitação.

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

Na produção, os vars do ambiente são configurados para os nomes do aplicativo.

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

Eu acho que estou errado é algumas configurações, mas depois de todo o dia eu ainda não consigo descobrir.

Atualizar

Eu continuei com meus testes e vi que o proxy não é capaz de alcançar o serviço proxy que me impede totalmente.

Em desenvolvimento eu configurei:

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

Se eu ligarhttp://lelylan-devices.herokuapp.com/devices tudo funciona bem.

Se eu chamo localhost: 8000 / devices (que aponta parahttp://lelylan-devices.herokuapp.com/devicesHeroku me diz que não existe esse aplicativo. Eu acho que o problema é de alguma forma no sistema de roteamento.

Aqui você pode acessar noCódigo fonte. Aqui a configuração 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

questionAnswers(2)

yourAnswerToTheQuestion