Node.js9 min read

Deployment with PM2 and Nginx

Deploy Node.js apps to production. Learn PM2, Nginx, and SSL.

Michael Torres
December 19, 2025
0.0k0

Deployment to Production

PM2 Process Manager

```bash npm install -g pm2

pm2 start app.js

pm2 start app.js -i max

pm2 list pm2 logs pm2 monit pm2 restart app pm2 stop app

pm2 startup pm2 save ```

Nginx Reverse Proxy

```nginx server { listen 80; server_name example.com; location / { proxy_pass http://localhost:3000; 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; } } ```

```bash sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ```

SSL with Let's Encrypt

```bash sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d example.com

sudo certbot renew --dry-run ```

Graceful Shutdown

```javascript const server = app.listen(3000);

process.on('SIGTERM', () => { console.log('SIGTERM received, closing server...'); server.close(() => { mongoose.connection.close(false, () => { process.exit(0); }); }); }); ```

Key Takeaway

Use PM2 for process management. Nginx as reverse proxy. Enable SSL with Let's Encrypt. Implement graceful shutdown. Monitor logs and errors.

#Node.js#Deployment#PM2#Nginx#Production