How to Configure Nginx as a Reverse Proxy
A reverse proxy forwards client requests to a backend application (for example a Node.js or Python app running on a local port). Nginx handles this efficiently.
1. Create a proxy server block
sudo nano /etc/nginx/sites-available/app.example.comAssuming your app listens on port 3000:
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}2. Enable and reload
sudo ln -s /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginxRequests to your domain are now proxied to the backend app. Add SSL with sudo certbot --nginx.