NginxからNode.jsのWebサーバーへリバースプロキシしてみましたので手順をメモします。
OSはUbuntu 16.04 Serverです。
Node.jsのWebサーバーが待ち受けるポートは3000番とします。IPは192.168.33.10とします。
1. Nginxを設定します
DigitalOceanの設定ガイドを参考にして、@default.conf に3000番へリバースプロキシするように記述しました。
rootはNode.jsの静的ファイルがあるパブリックフォルダを指定し、静的ファイルはNginxで返します。
upstream nodejs { server localhost:3000; } location / { root /path/to/node-app/public; try_files $uri @node; expires 30d; access_log off; } location @node { proxy_pass http://node; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; }
nginx をリスタートしておきます。
$ sudo service nginx restart
2. Node.jsのWebサーバーを起動して動作確認します
動作確認用に公式のExampleコードでNode.jsのWebサーバーを起動します。
@example.js
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Webサーバーを起動します。
$ node example.js
Server running at http://127.0.0.1:3000/
ブラウザで192.168.33.10へアクセスして”Hello World”と表示されれば完了です。