Умм, я постараюсь быть более ясным.
На сервере приложений, который я написал в 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