Умм, я постараюсь быть более ясным.
На сервере приложений, который я написал в node.js, у меня есть внутренний прокси для нескольких портов:
- В моем порту
8080у меня есть rest api. - В моем
3000порту у меня есть мой push-сервер и чат.
Я использую пакет npm subdomain-router для внутренней маршрутизации в порт, выставляя поддомены в "front-end", который proxy обратно в эти порты.
демонстрация кода: (<some-app> явно не является истинным именем приложения)
require('subdomain-router')
({
host: '<some-app>.herokuapp.com',
subdomains:
{
'': 8080, // <some-app>.herokuapp.com <=> ::8080 --WORKS--
'api': 8080, // api.<some-app>.herokuapp.com <=> ::8080
'chat': 3000, // chat.<some-app>.herokuapp.com <=> ::3000
'push': 3000 // push.<some-app>.herokuapp.com <=> ::3000
}
}).listen(process.env.PORT || 5000);
API отлично работает, хотя я не могу получить доступ к нему через <some-app>.herokuapp.com:8080, но только через <some-app>.herokuapp.com и позволить внутреннему модулю subdomain-router сделать это волшебным.
Кроме того, я не могу получить доступ к подобластям. При попытке получить доступ к api.<some-app>.herokuapp.com я получаю страницу ошибки No such app от heroku.
TL; DR доступ к <some-app>.herokuapp.com работает (перенаправляет на путь /v1 для моего API), но не может получить доступ к <some-app>.herokuapp.com:8080, <some-app>.herokuapp.com:3000 или chat.<some-app>.herokuapp.com.
При попытке получить доступ к моему API, указав порт в URL-адресе (например: <some-app>.herokuapp.com:8080), я получаю следующую ошибку в моем браузере (google chrome): ERR_CONNECTION_REFUSED.
Моя образованная догадка говорит о том, что это может быть связано с открытием портов в геройку, но я не знаю, как это сделать (попробовал googling ofc). < ш > Это не объясняет, почему я не могу получить доступ к поддоменам.
Поблагодарили бы любой свет пролить на эту проблему.
Я новичок в геройку, и это действительно расстраивает.
Спасибо!
Amit