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";