2011-06-22 17 views
10

Próbuję przekierować ruch z adresu URL mojej aplikacji testowej/api/* do mojego api hostowanego na Heroku.Heroku Brak takiego błędu aplikacji z modułem Node.js węzeł-http-proxy

W związku z tym localhost/api/hello powinien zostać wywołany na adres testapp.heroku.com/hello , a odpowiedź zostanie zwrócona.

Korzystanie prace węzeł-http-proxy idealnie na localhost localhost, ale kiedy skierować go do myapp.heroku.com, otrzymuję ten błąd:

Heroku | No such app 
There is no app configured at that hostname. 
Perhaps the app owner has renamed it, or you mistyped the URL. 

Mam wrażenie, że to układ routingu Heroku za to podważając moją prośbę, i nie znalazłem sposobu, aby to naprawić. Jakieś pomysły?

Odpowiedz

15

Widziałem coś podobnego, kiedy prosiłem żądania do innej domeny. Praca wokół tego, której używałem, polegała na zmodyfikowaniu nagłówka hosta na żądanie serwera proxy w celu dopasowania nazwy domeny oczekiwanej przez witrynę zdalną. W twoim przypadku kod będzie wyglądał następująco:

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


var server = httpProxy.createServer(function (req, res, proxy) { 
    req.headers.host = 'myapp.heroku.com'; 
    proxy.proxyRequest(req, res, { 
    port: 80, 
    host: 'myapp.heroku.com' 
    }); 
}).listen(9000); 

Chciałbym wiedzieć, czy to działa dla Ciebie.

+0

Działa bez zarzutu. Ustawienie hosta w nagłówku to naprawiło. Z jakiegoś powodu myślałem, że serwer proxy http zrobiłby to. Dzięki za uratowanie mnie przed użyciem brudnego haka CURL !! Dzięki! –

+3

http-proxy obsługuje opcję changeOrigin, która się tym zajmuje. https://github.com/nodejitsu/node-http-proxy#http-proxy –

+0

Dosłownie odkryłem i zrobiłem dokładnie to samo. –