I have a nginx deployment in k8s cluster which proxies my api/ calls like this:
server {
  listen 80;
  location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ /index.html =404;
  }
  location /api {
    proxy_pass http://backend-dev/api;
  }
}
This works most of the time, however sometimes when api pods aren't ready, nginx fails with error:
nginx: [emerg] host not found in upstream "backend-dev" in /etc/nginx/conf.d/default.conf:12
After couple of hours exploring internets, I found the article which pretty much the same issue. I've tried this:
  location /api {
    set $upstreamName backend-dev;
    proxy_pass http://$upstreamName/api;
  }
Now nginx returns 502. And this:
  location /api {
    resolver 10.0.0.10 valid=10s;
    set $upstreamName backend-dev;
    proxy_pass http://$upstreamName/api;
  }
Nginx returns 503.
What's the correct way to fix it on k8s?
 
     
    