From 912a37c00ccea97c652dda0d9a8917e440de0443 Mon Sep 17 00:00:00 2001 From: Liutenko Oleksandr Date: Thu, 24 Sep 2026 13:36:15 +0300 Subject: [PATCH] Resolve api upstream per request in frontend nginx nginx resolved api:8000 once at startup, so recreating the api container (new IP) left the proxy pointing at a dead address and every /api call returned 502. Co-Authored-By: Claude Opus 5.5 --- docker/nginx.frontend.conf | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docker/nginx.frontend.conf b/docker/nginx.frontend.conf index 1b2fc1d..959e9b1 100644 --- a/docker/nginx.frontend.conf +++ b/docker/nginx.frontend.conf @@ -10,8 +10,15 @@ server { root /usr/share/nginx/html; index index.html; + # Имя `api` резолвится через DNS docker на каждый запрос (resolver + переменная), + # а не один раз при старте nginx: иначе после пересоздания контейнера api + # (новый IP) nginx продолжает стучаться на старый адрес и отдаёт 502. + resolver 127.0.0.11 valid=10s ipv6=off; + set $api_upstream http://api:8000; + location /api/ { - proxy_pass http://api:8000/api/; + # С переменной proxy_pass без URI передаёт исходный путь /api/... как есть. + proxy_pass $api_upstream; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;