web-dev-qa-db-ja.com

Herokuでnode.jsサーバーのポートを設定する

次の行でnode.jsサーバーを起動して、ポートを設定しました。

app.set('port', process.env.PORT || 8080);

つまり、ローカルで実行する場合と同様に、PORT環境変数を読み取るか、デフォルトで8080に設定する必要があります。どちらもHerokuでは発生せず、サーバーは常にデフォルトのポート80を使用します。それを変更する方法はありますか?

heroku config
PORT: 8080
30
Crocodile

できません。 Herokuは、バインドすることになっているPORT変数を設定し、tcp/80でリッスンします。

45
punund

次のようにherokuによって開かれたポートを使用する必要があります。

port = process.env.PORT || 80

何らかの方法でまだ設定されていない場合は、ポートを80に設定します

5
QW3RTY

HerokuはWebアプリを他のアプリと同様に扱い、リスニングポートを直接割り当てることはできません。 WebサーバーにはHerokuによって動的ポートが割り当てられますが、それにアクセスするには、デフォルトポート(80)を使用する必要があります。

Herokuでは、アプリは完全に自己完結型であり、実行環境へのWebサーバーのランタイムインジェクションに依存せずに、Webに面したサービスを作成します。各Webプロセスは単純にポートにバインドし、そのポートから着信する要求をリッスンします。バインドするポートは、HerokuによってPORT環境変数として割り当てられます。

Herokuとの契約は、プロセスがポートにバインドしてリクエストを処理することです。 Herokuのルーターは、適切なポートのプロセスにHTTPリクエストを送信します。

リファレンス: Heroku Runtime Principles-Web Servers

4
gomisha

私の場合、herokuはデフォルトのHTTPSポート443でリッスンしており、heroku config:get PORTを介して表示されませんでした。

1
wscourge