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
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
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;
}
}
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
SSL with Let's Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com
sudo certbot renew --dry-run
Graceful Shutdown
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