HTTP プロキシとしての Nginx
PM2 のフロントエンドとして NGINX を HTTP プロキシとして使用することは一般的な手法です。NGINX を使用すると、静的ファイルを迅速に提供し、SSL プロトコルを管理し、トラフィックを Node.js アプリケーションにリダイレクトできます。
ポート 3001 でリッスンする Node.js アプリケーションと、ポート 443 (HTTPS) から 3001 にトラフィックを転送する NGINX の例を次に示します。このサンプルでは、Websocket 接続も処理されます。
nginx.conf
upstream my_nodejs_upstream {
server 127.0.0.1:3001;
keepalive 64;
}
server {
listen 443 ssl;
server_name www.my-website.com;
ssl_certificate_key /etc/ssl/main.key;
ssl_certificate /etc/ssl/main.crt;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://my_nodejs_upstream/;
proxy_redirect off;
proxy_read_timeout 240s;
}
}
これらのオプションの詳細については、Nginx ドキュメントで確認してください。これがあれば、ポート 3001
で実行される PM2 にリンクされた Node.js サーバーが必要になるだけで、本番環境対応の HTTP サーバーが完成します!