VPS Deploy Guide

Nginx Reverse Proxy

Route traffic from port 80 to your app container.

Install Nginx#

sudo apt install nginx -y

Configure#

Remove default site and create your config:

sudo rm /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-available/myapp

Single service#

server {
    listen 80;
    server_name DOMAIN;
 
    location / {
        proxy_pass http://localhost:APP_PORT;
        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_set_header X-Forwarded-Proto $scheme;
    }
}

Multiple services (subdomains)#

# Backend API
server {
    listen 80;
    server_name api.example.com;
 
    location / {
        proxy_pass http://localhost:8000;
        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_set_header X-Forwarded-Proto $scheme;
    }
}
 
# Frontend
server {
    listen 80;
    server_name app.example.com;
 
    location / {
        proxy_pass http://localhost:3000;
        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_set_header X-Forwarded-Proto $scheme;
    }
}

WebSocket support#

Add inside the location block if needed:

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

Enable and test#

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

Validate#

curl http://DOMAIN/
curl http://VPS_IP/
Assistant

Ask anything about the docs.