GNU/Linux >> Linux の 問題 >  >> Linux

ポートをブロックするプロセスが他にない場合でも、Node.js アプリをポート 80 で実行できない

エラー コード EACCES そのポートでアプリケーションを実行するための適切な権限がないことを意味します。 Linux システムでは、1024 未満のポートには root アクセスが必要です。


ポート 80 で実行する代わりに、

を使用してポート 80 をアプリケーションのポート (>1024) にリダイレクトできます。
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

これは、アプリケーションがポート 3000 で実行されている場合に機能します。


簡単な答え:以下を使用して、そのポートへのノード アクセスを許可できます。

setcap 'cap_net_bind_service=+ep' /path/to/nodejs

長い答え

編集:

新しいノード バージョンでは動作しない可能性があります


Linux
  1. Linux –特定のポートを使用してプロセスのPidを見つけますか?

  2. Node.js をバックグラウンド プロセスとして実行し、死ぬことはありませんか?

  3. コピーで使用するキャッシュを制限して、他のキャッシュに使用できるメモリを残すにはどうすればよいですか?

  1. シンボルが存在するにもかかわらず、dlsym が NULL を返す

  2. サーバーでスケジューラを使用してノードjsスクリプトを自動的に実行するにはどうすればよいですか

  3. 実行中のプロセスの絶対パスを知るにはどうすればよいですか?

  1. プロセスの実行にかかった秒数を変数に保存します

  2. フルパスを取得せずに ls を実行する

  3. シェルに関係なくプロセスを実行できますか?