[解決済み】Node.jsのみの使用と、Node.jsとApache/Nginxの併用について
2022-04-01 14:22:42
質問
Node.jsをサーバーとしてのみ使用する場合、どのようなケースで使用するのが好ましいですか?
を行う場合 ではなく Node.jsだけを使いたい場合、Node.jsと相性の良いものは何でしょうか?ApacheかNginxか?
どのように解決するのですか?
Node.jsの前に別のウェブサーバを置くには、いくつかの理由があります。
- Node.js プロセスの特権/setuid を気にする必要がない。80番ポートにバインドできるのは、通常rootだけです。nginx/Apache が root として起動し、ポート 80 にバインドし、root 権限を放棄することを心配するようにすれば、Node アプリはその心配をする必要がありません。
- 画像、CSS、JS、HTMLなどの静的ファイルを提供する。Nodeは適切な静的ファイルのWebサーバを使用するのに比べて効率が悪いかもしれません(特定のシナリオではNodeの方が速いかもしれませんが、これが普通であることはないでしょう)。ファイルがより効率的に提供されることに加え、Nodeから提供する場合のようにeTagsやキャッシュコントロールヘッダの処理について心配する必要はありません。フレームワークによっては、これを処理してくれるものもありますが、確認が必要です。とはいえ、やはり遅いでしょう。
- Matt Sergeant が彼の回答で述べたように、ノードサービスがクラッシュした場合、より簡単に意味のあるエラーページを表示したり、静的なサイトにフォールバックしたりすることができます。そうでなければ、ユーザーは単にタイムアウトした接続を得るだけかもしれません。
- Nodeの前で別のWebサーバを実行することで、Nodeに対するセキュリティ上の欠陥やDoS攻撃を緩和することができるかもしれません。実際の例としては CVE-2013-4450 は Node の前で Nginx のようなものを走らせることで防ぐことができます。 .
2番目の箇所を補足すると、静的ファイルはCDNを経由するか、Varnishのようなキャッシュサーバーの後ろから提供する必要があります。この場合、オリジンがNodeであろうとNginxであろうとApacheであろうと、あまり問題にはなりません。
ウェブソケットを使用する場合、最近のバージョンのnginx (>= 1.3.13) を使用するようにしてください。
関連
-
[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない
-
[解決済み] express は `body-parser deprecated undefined extended` としてエラーを投げます。
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.js + Nginx - 今度は何?
-
[解決済み] Node.js クイックファイルサーバ (静的ファイルオーバーHTTP)
-
[解決済み] Node.JSを使用して、JSONファイルを(サーバー)メモリに読み込むにはどうすればよいですか?
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] エラーです。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりません。
-
[解決済み] Express と nginx のどちらで静的ファイルを配信するのが良いですか?
-
[解決済み] Node.js + Nginx - 今度は何?