Skip to main content

Nginx Setup

Configure Nginx as a reverse proxy for TunnelAPI.

Install Nginx

sudo apt update
sudo apt install nginx certbot python3-certbot-nginx

Configuration

Create /etc/nginx/sites-available/tunnelapi:

# Frontend
server {
server_name tunnelapi.yourdomain.com;

location / {
proxy_pass http://127.0.0.1:8081;
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;
}
}

# API
server {
server_name api.tunnelapi.yourdomain.com;

location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

# Tunnel Server
server {
server_name tunnel.tunnelapi.yourdomain.com *.tunnelapi.yourdomain.com;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 86400;
}
}

Enable Site

sudo ln -s /etc/nginx/sites-available/tunnelapi /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

SSL Certificates

sudo certbot --nginx -d tunnelapi.yourdomain.com \
-d api.tunnelapi.yourdomain.com \
-d tunnel.tunnelapi.yourdomain.com \
-d "*.tunnelapi.yourdomain.com"