Use the Nginx reverse proxy Node.js method

  • 2020-05-14 06:01:12
  • OfStack

This paper introduces the method of using Nginx reverse proxy Node.js and shares it with you as follows:

Install pm2


npm install pm2 -g

ln -s /home/download/node-v8.11.1-linux-x64/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2

Modify package json


"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "pm2": "/home/download/node-v8.11.1-linux-x64/lib/node_modules/pm2/bin/pm2 start /web/mazey.cn/server/app.js"
}

or


"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "pm2": "pm2 start app.js"
}

Start the pm2


npm run pm2

Boot pm2


pm2 save

pm2 startup centos

Pay attention to

If pm2 startup centos fails, try pm2 startup.


PM2 detected systemv but you precised centos
 Please verify that your choice is indeed your init system
 If you arent sure, just run : pm2 startup

Modify the Nginx configuration


vim /etc/nginx/conf.d/*.conf

upstream nodejs {
  server 127.0.0.1:3000;
  keepalive 64;
}
server {
  listen 80;
  server_name domain.cn;
  root /web/mazey.cn;
  index index.html index.htm;
  #  Web site to /server When the walk nodejs
  location /server {
    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_set_header  Connection "";
    proxy_pass http://nodejs;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    expires 30d;
  }
  location ~ .*\.(js|css)?$ {
    expires 1h;
  }
}

app.js:


const express = require('express')
const app = express()
let hi = 'hi'

app.get('/server', (req, res, next) => {
 hi = `Hello Mazey!\n`
 next()
}, (req, res) => {
 res.send(`
 ${hi}
 ${req.method}\n
 ${req.originalUrl}\n
 ${req.query.id}\n
 `)
})

const server = app.listen(3000, function () {
 let host = server.address().address
 let port = server.address().port

 console.log('Example app listening at http://%s:%s', host, port)
})

Pay attention to

Error reporting Cannot GET /xxx indicates that Express is not properly routed.


Related articles: