[解決済み】Node.jsを80番ポートで実行する際のベストプラクティス(Ubuntu / Linode)【終了しました
質問
をセットアップしているところです。
Node.js
サーバーを
cloud Linux node
の詳細については、かなり初心者です。
Linux admin
. (ちなみに、Apacheを同時に使おうとはしていません)。
すべて正しくインストールされているのですが、このとき
root login
でのリスニングができません。
port 80
をnodeで実行します。しかし、セキュリティ上の理由から、rootとして実行することは避けたいと思います。
ベストプラクティスは何ですか?
- ノードに適切なパーミッション/ユーザーを設定し、安全/サンドボックス化されるようにしますか?
- この制約の中で80番ポートを使用することを許可してください。
- nodeを起動し、自動的に実行します。
- コンソールに送信されるログ情報を処理します。
- その他、一般的なメンテナンスとセキュリティに関すること。
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
.
関連
-
[解決済み】環境変数TERMが設定されていない件
-
[解決済み】 "find: paths must priore expression:" カレントディレクトリのファイルも見つける再帰的検索を指定するには?
-
[解決済み] sysrootとは何ですか、そしてどのように作成しますか?
-
[解決済み] という記号がありますが、これはどういう意味ですか?
-
[解決済み] sshpass: コマンドが見つからないエラー
-
[解決済み] vimdiff の出力ファイルにおける +-- の意味は何ですか?それをオフにする方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで現在のスクリプトのパスを取得するにはどうしたらいいですか?
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] Node.jsの例外処理のベストプラクティス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashのexportコマンド
-
[解決済み】Postgresql -bash: psql: コマンドが見つかりませんでした。
-
[解決済み] chmod: 'my_script.sh' のパーミッションを変更しました。操作が許可されていない
-
[解決済み] ls -al 出力列フィールド
-
[解決済み] Linuxのシェルでwebsocketの応答を読み取る方法
-
[解決済み] フォルダが存在するにもかかわらず、マウントポイントが存在しない。手動でマウントできる
-
[解決済み] ユーザーデータスクリプトは私のカスタムAMIでは動作しませんが、標準のAmazon linuxでは動作しています。
-
[解決済み] vimdiff の出力ファイルにおける +-- の意味は何ですか?それをオフにする方法は?
-
[解決済み] sudoとnohupを連動させる
-
[解決済み] Nautilusのようにコマンドラインからマウントする方法とは?[クローズド]です。