← How-Tos
raspberry-pi Mar 26, 2026 ◯ 1 min read

Setting Up Nginx as a Reverse Proxy on Raspberry Pi

raspberry pinginxreverse proxynetworking

Route traffic to multiple home services under one entry point with HTTPS support.

Install Nginx

sudo apt install nginx -y
sudo systemctl enable nginx

Test: navigate to http://raspberrypi.local

Basic Reverse Proxy Config

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

server {
    listen 80;
    server_name homeassistant.local;

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

Enable:

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

Path-Based Routing

location /pihole/ { proxy_pass http://localhost:8080/; }
location /grafana/ { proxy_pass http://localhost:3000/; }

HTTPS with Let's Encrypt

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com

Auto-renews — no manual action needed.

WebSocket Support

Required for Home Assistant and other apps:

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