環境
ホスティングサービス: さくらのVPS
CentOS Linux release: 7.6.1810 (Core)
node: v6.17.1
express: 4.16.1
nginx: 1.20.1
全般的にこちらのサイトを参考にさせてもらいました。
さくらのVPSにnginxとNode.jsの環境を構築したメモ – Qiita
nginxのインストール
既にファイヤウォールの設定などは終わっているものとして。
sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
sudo yum -y install nginx
nginxの起動
sudo systemctl start nginx
これでサーバーのドメインを叩けばnginxに接続できる。
Node.jsとnpmのインストール
curl -L https://www.npmjs.com/install.sh | sh
sudo npm update -g npm
sudo npm cache clean
sudo npm install -g n
sudo n stable
sudo node -v
sudo npm -v
Expressのインストール
sudo npm install -g express
sudo npm install -g express-generator
元記事ではpm2のインストールが行われているが、私の環境では入らなかった。
pm2は自動でExpressの再起動をかける機能があるよう。
私はこれについて、かつてはnodemonを使っていた記憶がある。
ここはひとまずスキップ。
Expressでサンプルプロジェクトを立ち上げる
express sample_app
サンプルプロジェクトの起動
cd sample_app
./bin/www
これにて、サーバーのドメインの:3000ポートにアクセスすることで、Expressのウェルカムページが表示される。
nginxのリバースプロキシの設定
ここから、通常のhttp80ポートにアクセスすることで、Expressの3000ポートに接続するようにしたい。
nginxのリバースプロキシを以下の様に設定する。
sudo vi /etc/nginx/conf.d/default.conf
#/etc/nginx/conf.d/default.conf
upstream node-backend {
server localhost:3000;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
charset utf-8;
access_log /var/log/nginx/default.access.log main;
error_log /var/log/nginx/default.error.log;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
proxy_pass http://node-backend;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
#(以下略)
}
nginxの再起動
sudo systemctl restart nginx
これで、ポートを指定せずにサーバーのドメインを叩くと、Expressのページが表示されるようになった。