[解決済み] Node.js + Nginx - 今度は何?
質問
サーバーにNode.jsとNginxをセットアップしました。さて、実際に使ってみようと思うのですが、その前に2つ質問があります。
- どのように連携させるか?リクエストはどのように処理すればよいのでしょうか?
-
Node.jsのサーバーには2つのコンセプトがありますが、どちらが良いですか?
a. 必要なウェブサイトごとに個別のHTTPサーバーを作成する。そして、すべてのJavaScriptコードをプログラムの開始時にロードし、コードが一度だけ解釈されるようにします。
b. すべてのNode.jsリクエストを処理する1つのNode.jsサーバを作成します。これは、要求されたファイルを読み、その内容を評価します。したがって、ファイルは各リクエストで解釈されますが、サーバーのロジックははるかに単純です。
Node.jsの正しい使い方がよくわからないのですが。
どのように解決するのですか?
Nginx はフロントエンドサーバーとして動作し、この場合は node.js サーバーにリクエストをプロキシします。そのため、node 用に nginx の設定ファイルをセットアップする必要があります。
これは、私がUbuntuボックスで行ったことです。
ファイルを作成します。
yourdomain.com
で
/etc/nginx/sites-available/
:
vim /etc/nginx/sites-available/yourdomain.com
その中に、次のようなものがあるはずです。
# the IP(s) on which your node server is running. I chose port 3000.
upstream app_yourdomain {
server 127.0.0.1:3000;
keepalive 8;
}
# the nginx server instance
server {
listen 80;
listen [::]:80;
server_name yourdomain.com www.yourdomain.com;
access_log /var/log/nginx/yourdomain.com.log;
# pass the request to the node.js server with the correct headers
# and much more can be added, see nginx config options
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://app_yourdomain/;
proxy_redirect off;
}
}
nginx (>= 1.3.13) に WebSocket リクエストも処理させたい場合は、以下の行を
location /
セクションをご覧ください。
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
この設定が完了したら、上記の設定ファイルで定義されたサイトを有効にする必要があります。
cd /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/yourdomain.com yourdomain.com
でnodeサーバアプリを作成します。
/var/www/yourdomain/app.js
で実行し
localhost:3000
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:3000/');
構文の間違いがないかテストします。
nginx -t
nginxを再起動します。
sudo /etc/init.d/nginx restart
最後にnodeサーバを起動します。
cd /var/www/yourdomain/ && node app.js
これで、yourdomain.com に "Hello World" が表示されるはずです。
最後に、ノード・サーバーを起動する際の注意点として、ノード・デーモンに対して何らかの監視システムを使用する必要があります。素晴らしい アップスタートとモニターを使ったノードに関するチュートリアル .
関連
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsでファイルを書き込む
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsで環境変数を読み込む
-
[解決済み] 一般的に、Node.jsは10,000の同時リクエストをどのように処理するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Discord.js が特定のチャンネルにメッセージを送信する場合
-
[解決済み】Node.jsのホスト名/IPが証明書のaltnamesと一致しない。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] AWS s3 api error: specified bucket does not exist.
-
[解決済み] ノードマータ予期せぬフィールド
-
[解決済み] Macでポート3000をロックしているプロセスを見つける(そして殺す)【終了
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。
-
[解決済み】Node.jsのみの使用と、Node.jsとApache/Nginxの併用について