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 <noreply@anthropic.com>
This commit is contained in:
2026-09-24 13:36:15 +03:00
co-authored by Claude Opus 5.5
parent 089e0a4011
commit 912a37c00c
+8 -1
View File
@@ -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;