fix(admin): résolution DNS dynamique du upstream api dans nginx

nginx résolvait "api" une seule fois au démarrage et gardait l'IP en
cache indéfiniment (comportement par défaut pour un proxy_pass avec
hostname statique). Après un redeploy Coolify du service api (nouveau
conteneur = nouvelle IP), nginx continuait à taper sur l'ancienne IP
morte -> "connect() failed (111: Connection refused)" -> 404 côté
client. Fix : resolver 127.0.0.11 (DNS Docker embarqué) + proxy_pass
via variable pour forcer une résolution à chaque requête.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nicolas Fryder 2026-06-30 22:21:37 +02:00
parent a7d7bc94de
commit def2b1214f

View file

@ -3,8 +3,14 @@ server {
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html; index index.html;
# Résolveur DNS interne Docker : force nginx à re-résoudre "api" à chaque
# requête au lieu de mettre l'IP en cache au démarrage (sinon un redeploy
# du service api laisse nginx pointer vers un conteneur mort -> 502/404).
resolver 127.0.0.11 valid=10s;
location /admin/api/ { location /admin/api/ {
proxy_pass http://api:3000; set $upstream_api http://api:3000;
proxy_pass $upstream_api;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@ -12,7 +18,8 @@ server {
} }
location /admin/auth/ { location /admin/auth/ {
proxy_pass http://api:3000; set $upstream_api http://api:3000;
proxy_pass $upstream_api;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;