1. ホーム
  2. linux

[解決済み】Node.jsを80番ポートで実行する際のベストプラクティス(Ubuntu / Linode)【終了しました

2022-04-05 20:06:23

質問

をセットアップしているところです。 Node.js サーバーを cloud Linux node の詳細については、かなり初心者です。 Linux admin . (ちなみに、Apacheを同時に使おうとはしていません)。

すべて正しくインストールされているのですが、このとき root login でのリスニングができません。 port 80 をnodeで実行します。しかし、セキュリティ上の理由から、rootとして実行することは避けたいと思います。

ベストプラクティスは何ですか?

  1. ノードに適切なパーミッション/ユーザーを設定し、安全/サンドボックス化されるようにしますか?
  2. この制約の中で80番ポートを使用することを許可してください。
  3. nodeを起動し、自動的に実行します。
  4. コンソールに送信されるログ情報を処理します。
  5. その他、一般的なメンテナンスとセキュリティに関すること。

80番ポートのトラフィックを別のリスニングポートに転送する必要がありますか?

ありがとうございます

解決方法は?

80番ポート

私のクラウドインスタンスでは、次のコマンドでポート80をポート3000にリダイレクトしています。

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

そして、3000番ポートでNode.jsを立ち上げる。80番ポートへのリクエストは3000番ポートにマッピングされます。

また /etc/rc.local ファイルを開き、その行から sudo . これで、マシンの起動時にリダイレクトが追加されます。このとき sudo/etc/rc.local として実行されるため、そこにあるコマンドは root システムが起動したときに

ログ

を使用します。 いつまでも モジュールを使ってNode.jsを起動します。 このモジュールは、クラッシュしたときに再起動するようにし、コンソールログをファイルにリダイレクトするようにします。

ブート時に起動する

ポートリダイレクト用に編集したファイルに、Node.jsの起動スクリプトを追加します。 /etc/rc.local . これにより、システム起動時にNode.jsの起動スクリプトが実行されます。

Digital Ocean & その他のVPS

これはLinodeだけでなく、Digital Ocean、AWS EC2、その他のVPSプロバイダーにも当てはまります。ただし、RedHatベースのシステムで /etc/rc.local/ect/rc.d/local .