メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.replit.com/llms.txt

Use this file to discover all available pages before exploring further.

Replitはプロジェクトをクラウド環境で実行するため、ポートはローカルコンピューターとは異なる動作をします。(TCPポートとは何かについての基本的な説明が必要な場合は、こちらから始めてください。) コンピューターでは、ポート管理のレイヤーが1つしかありません:プログラムはリッスンするポートを定義し、インターネットからコンピューターのそのポートにトラフィックが届くと、適切なプロセスにルーティングされます。
コンピューター
0.0.0.0の部分はアドレスまたはホストです。プロセスが0.0.0.0でリッスンしている場合、すべてのネットワークインターフェースでリッスンするということを意味します。つまり、別のコンピューター(インターネット上)がコンピューターのIPアドレスにリクエストを送ると、それが見えます。したがって、0.0.0.0でリッスンすることは、それらのプロセスが公開インターネットからアクセス可能であることを意味します(コンピューターが接続されている場合)。 ほとんどのプログラミングフレームワークは、開発中は0.0.0.0でリッスン_しません_。プライバシーとセキュリティのために、作業中に自分の作業を公開したくない場合があるからです。代わりに、別のアドレス(127.0.0.1、別名localhost)でリッスンします。これは、そのコンピューターのみがそのポートへのリクエストを行えることを意味します。
Localhostポートはホストしているコンピューターでのみ見えます。
Replitでは、実行中のプロセスをWebビューまたは外部リクエストからアクセス可能にするには、外部ポートを定義する必要があります。プロセスが通常使用する「内部ポート」は、Replitが提供するサンドボックス化されたクラウド環境の内部からのみ見えるためです。その内部ポートは、プログラムに正しいトラフィックを送信するために外部からアクセス可能なポートに接続する必要があります。プロセスが0.0.0.0のような公開可能なポートでリッスンしていても、外部ポートにバインドする必要があります。
外部ポートはトラフィックを内部ポートに転送し、プログラムがリッスンします。
Replitは外部ポートを特定の内部ポートにバインドすることでこれを行います。たとえば、上図では外部ポート:80が内部ポート:3000にバインドされています。これは、Replitアプリがポート80で受け取るトラフィックが内部ポート3000に送られることを意味します。 この設定は.replit設定ファイルの[[ports]]セクションに記録されます。 デフォルトでは、Replitは最初に開いたポートをデフォルトの外部ポート80にバインドします。これにより、そのプロセスがポートアドレスなしのドメインで利用可能になります(例:customdomain.com:3000/ではなくcustomdomain.com/)。追加で開かれた内部ポートは、他の利用可能な外部ポートにバインドされます(以下の完全なリストを参照)。

プレビュー

Previewツールでは、WebビューがレンダリングしているExternal Portをドメインをクリックして別のポートを選択することで変更できます。また、「ギア」アイコンからネットワーキングツールを開いて詳細を確認することもできます。
Webビューのドメインをクリックすると表示するポートを選択できます。

デフォルトポート

ポート:80はhttpトラフィックの「デフォルトポート」であるため、ルートドメインに送られたhttpトラフィックは自動的にポート80にルーティングされます。そのため、ポート80のURLにはポートパスが表示されません。:80以外のポートはドメインパスに表示されます(例:customdomain.com:4200/)。(ReplitはデフォルトでTLSを提供するため、技術的にはhttpsのデフォルトポートであるポート443を使用します。実際の目的では、これらは交換可能として扱えます。)

ネットワーキングツール

ポート設定とネットワーキングの詳細については、ネットワーキングツールを開くことができます。Replitアプリで開かれているポートの状態、バインドされている外部ポート、設定の追加や削除ができます。
ネットワーキングツールにポートの設定が表示されます。

公開

AutoscaleとReserved VMのデプロイメントは単一の外部ポートの公開のみをサポートし、対応する内部ポートはlocalhostを使用できません。複数のポートを公開したり、localhostで単一ポートを公開したりすると、公開されたアプリが失敗します。Autoscaleデプロイメントが期待通りに動作するようにするための簡単な方法は、インターネットからやり取りしたいサービスのポートを除いて、設定内のすべてのexternalPortエントリを削除することです。

デバッグ

期待通りに動作しない一般的な理由として、ポート設定は正しく見えても、プログラムが実際に別のポートを見ていることが挙げられます。たとえば、設定が次のような場合:
[[ports]]
internalPort = 3000
externalPort = 80
インターネットのポート80へのトラフィックは内部ポート3000に送られます。しかし、プログラムが実際にはポート3000ではなく別のもの(8080など)でリッスンしている場合、トラフィックが通っていないように見えます。これは、コードのポートを変更したが設定の対応するポートを変更しなかった場合や、あるプロジェクトから別のプロジェクトに設定をコピー&ペーストした場合に起こる可能性があります。
プログラムはリッスンするポートを変更できます。
各フレームワークには異なるデフォルトポートがあります。たとえば、Flaskは5000、reactは3000、laravelは8000です。正しいポートが設定されていることを確認してください!

設定

Replitはポートが開かれたときにReplitアプリで開かれたポートを自動的に利用可能な外部ポートにバインドし、そのバインドを.replit設定ファイルに記録します。 ただし、localhostで開く内部ポートに対してはデフォルトでこれが行われません。通常localhostで動作するサービスは、プロセスを実行しているコンピューターと同じコンピューターからのみアクセス可能であると想定しているためです(localhostポートは同じコンピューターでのみ見えます)。これは、そのようなサービスが公開インターネットからアクセス可能であることを前提に構築されたサービスほど安全でないことが多いことを意味します。 これは常にexposeLocalhost設定オプションを公開したいポートに対してtrueに設定することで上書きできます。 デフォルトでlocalhostポートを_常に_公開したい場合は、User Settingsツールの「ポートの自動転送」設定を「すべてのポート」に設定できます。 すべてのReplitアプリのポート設定を手動で制御し、開かれたポートの設定を_一切_作成しない場合は、それを「しない」に設定できます。

サポートされているポート

Replitアプリは最初のポートが開かれたときにデフォルトで外部ポート80を定義します。Replitアプリは3000、3001、3002、3003、4200、5000、5173、6000、6800、8000、8008、8080、8081を追加の外部ポートとして公開できます。 ポート22と8283は内部で使用されているため、転送できません。

[[ports]] .replit設定

タイプ:{localPort, externalPort, exposeLocalhost} [[ports]]設定では、Webアウトプットに公開するHTTPポートを設定できます。デフォルトでは、ホスト0.0.0.0で公開されているHTTPポートはReplitアプリのWebアウトプットとして公開されます。 デフォルトポートを上書きせずに追加のポートを提供するには、.replitファイルに新しい[[ports]]エントリを追加します。localPortとexternalPortエントリの両方を指定する必要があります。以下に定義されているように.replitファイルに複数の[[ports]]エントリを追加することで複数の追加ポートを追加できます。

localPort

Replitが外部ポートにバインドするポートを決定します。

externalPort

そのローカルポートの公開アクセス可能なポートとして公開するポートを決定します。
[[ports]]
localPort = 3000
externalPort = 80
特定のポートを_一切_公開したくない場合は、localPort設定を残したままexternalPortを追加しないだけで済みます:
[[ports]]
localPort = 3000

exposeLocalhost

localhostを使用している内部ポートを外部ポートにバインドできるかどうかを決定します。truefalse、またはnullにできます。
[[ports]]
localPort = 3000
externalPort = 80
exposeLocalhost = true