2.3 KiB
Proxy Reminder: Race Management Upstream Resilience
Problem
mnmsoft_proxy currently fails hard at nginx startup if the upstream hostname
race-management-web is not resolvable at config-parse time.
Observed failure:
host not found in upstream "race-management-web" in /etc/nginx/conf.d/default.conf
This caused the proxy container to restart in a loop whenever the
race-management-web container was down or not yet attached to the shared
Docker network.
What Was Already Fixed
In /opt/docker/apps/race-management/docker-compose.yml:
dbnow usesrestart: unless-stoppedwebnow usesrestart: unless-stopped
That reduces the chance of the backend staying down, but the proxy should still be made tolerant of temporary upstream absence.
What Needs To Be Done In Proxy
Relevant proxy files:
/opt/docker/apps/proxy/generated/default.conf- possibly
/opt/docker/apps/proxy/nginx/nginx.conf
Goal
Avoid nginx resolving race-management-web only once at startup.
Instead, make nginx resolve through Docker DNS at request time or with a
short-lived resolver cache.
Recommended Approach
Use Docker's internal DNS resolver and proxy through a variable.
Typical pattern:
resolver 127.0.0.11 valid=10s;
location / {
set $race_management_upstream http://race-management-web:8000;
proxy_pass $race_management_upstream;
}
Why
With a static upstream like:
proxy_pass http://race-management-web:8000;
nginx may try to resolve the hostname during startup/config load. If the container is absent at that exact moment, nginx exits and the proxy restarts.
Using resolver 127.0.0.11 plus a variable makes nginx rely on Docker DNS more
safely at runtime.
Also Clean Up
The proxy logs also show this warning:
the "listen ... http2" directive is deprecated
If present, replace patterns like:
listen 443 ssl http2;
with the newer form appropriate for the installed nginx version.
After Editing
Reload/recreate the proxy stack and verify:
cd /opt/docker/apps/proxy
docker compose up -d
docker logs --tail 100 mnmsoft_proxy
Expected result:
- proxy stays up even if
race-management-webis briefly unavailable during startup - no more
host not found in upstream "race-management-web"fatal error