Прокси-сервер с Node.js на Heroku
Я пытаюсь создать прокси-сервер с Node.js на Heroku, используя http-proxy. Локально все работает нормально, но у меня проблемы с 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);
Как вы можете видеть в примере, я установил объект маршрутизации. То, что я говорю, это: когда запрос соответствует «/ устройствам»; затем направьте запрос в службу устройства. (идентифицируется переменной среды DEVICES_URI)
В разработке я поставил
LOCALHOST = 'localhost' DEVICES_URI = 'http://localhost:3000'Это означает, что все запросы, идущие к localhost: 8000 / устройств, проксируются localhost: 3000 / устройств, что я и хочу. Все работает отлично.
Проблема в производстве. Это дает мне ошибку тайм-аута, повторенную несколько раз за каждый запрос.
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
В производственной среде переменные настроены на имена приложений.
LOCALHOST = 'lelylan-api.herokuapp.com' DEVICES_URI = 'lelylan-devices.herokuapp.com/'Я предполагаю, что я ошибаюсь, некоторые конфигурации, но после целого дня я все еще не в состоянии понять это.
Update
Я продолжил свои тесты и увидел, что прокси-сервер не может получить доступ к прокси-серверу, что полностью останавливает меня.
В разработке я установил:
LOCALHOST = 'localhost' DEVICES_URI = 'lelylan-devices.herokuapp.com/'Если я позвонюhttp://lelylan-devices.herokuapp.com/devices все отлично работает
Если я позвоню localhost: 8000 / devices (что указывает наhttp://lelylan-devices.herokuapp.com/devices) Heroku говорит мне, что такого приложения нет. Я думаю, что проблема как-то в системе маршрутизации.
Здесь вы можете получить доступ наисходный код. Here the configuration vars for 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