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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user