Flaskにはポート転送の問題がありますが、express.jsにはありません。

Flaskにはポート転送の問題がありますが、express.jsにはありません。

複数のサービスを含むローカルで実行されるサーバー(Arch Linux)があり、別のポートで実行される新しいPythonサービス(Flask)を追加したいと思います。ローカルでは、サーバーが実行されており、192.168.x.x現在サーバーで実行されているすべてのサービスにすでにアクセスできます。ポートでFlaskサーバーを起動しましたが、ノート5000ブックでnmapを実行すると、ポートはまだ閉じていると表示されます。

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5432/tcp open  postgresql

ただし、サーバーのローカルホストにはポートが開いています。

myserver~$ nmap localhost

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

私はこれがiptablesの一種の問題だと思いましたが(私はこれについてはよくわかりません)、3000ポートでexpress.jsサーバーを実行しようとしました(すでにポートで実行されているサーバーがありました)、5000十分に機能しました。

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

Flaskサーバーをどのように渡すべきかはまだ分からないので、なぜssh、express.js、postgresサービスがデフォルトで配信されるのか疑問に思います。助けてくれてありがとう!

答え1

HTTPサーバーに組み込まれたFlaskを使用すると仮定すると、次のように動作します。フラスコ文書(外部から見えるサーバーまで下にスクロール):

サーバーを実行すると、ネットワーク上の他のコンピューターではなく、自分のコンピューターからのみサーバーにアクセスできることがわかります。デバッグモードでは、アプリケーションユーザーがコンピュータ上で任意のPythonコードを実行できるため、これがデフォルト設定です。

デバッガを無効にした場合、またはネットワーク上のユーザーを信頼している場合は、コマンドラインに --host=0.0.0.0 を追加すると、サーバーを公に使用できます。

フラスコの実行 --host=0.0.0.0

これは、オペレーティングシステムにすべてのパブリックIPを受信するように指示します。

nmapコンピュータの出力には、myserverポート5000が開いていると表示されます。を使用したため、nmap localhostローカルホストで192.168.xxではなく127.0.0.1のオープンポートを取得します。

関連情報