我nginx
在 k8s 集群中有一个部署,它api/
像这样代理我的调用:
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;
}
}
这在大多数情况下都有效,但是有时当api
pod 未准备好时,nginx 会失败并出现错误:
nginx: [emerg] host not found in upstream "backend-dev" in /etc/nginx/conf.d/default.conf:12
经过几个小时的互联网探索,我发现了几乎相同问题的文章。我试过这个:
location /api {
set $upstreamName backend-dev;
proxy_pass http://$upstreamName/api;
}
现在 nginx 返回502。还有这个:
location /api {
resolver 10.0.0.10 valid=10s;
set $upstreamName backend-dev;
proxy_pass http://$upstreamName/api;
}
Nginx 返回503。
在 k8s 上修复它的正确方法是什么?