the YYB — yellowyolkblue, Steve Zissou’s dev & sysadmin notebook

nginx reverse proxy notes I keep losing

Synthwave Shodan-style scan readout of an exposed host: open port 8888, service banners, geolocation
Put a box on the internet and the internet notices. Proxy carefully.

I have written this same proxy block maybe forty times and I look it up every single time. So here it is, parked somewhere I'll actually find it.

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

The line everyone forgets is X-Forwarded-Proto. Leave it out and your app thinks every request arrived over plain HTTP, then it cheerfully builds redirect loops back to https and you spend an hour blaming the browser.

For WebSockets, add the Upgrade and Connection headers and bump proxy_read_timeout, or your sockets die at sixty seconds on the dot. Ask me how I learned that one. Actually, don't.