Я использую Docker Swarm.Я поместил контейнер nginx перед моим API для целей кэширования.Так как каждый раз, когда я развертываю свой API, он создает новый внутренний IP-адрес, я использую имя моего сервиса tasks.api согласно документации Swarm.Ниже мой блок местоположения
proxy_cache_path /var/cache/nginx/ta_api levels=1:2 keys_zone=api_cache:10m max_size=10g
inactive=60m use_temp_path=off;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tasks.api:10010;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_buffering on;
proxy_cache api_cache;
proxy_cache_bypass $http_upgrade;
# Add header to see if response was cached
add_header X-Cache-Status $upstream_cache_status;
# Allow one cache-update request at a time sent to an origin server.
proxy_cache_lock on;
# Permit revalidation of stale cached responses.
proxy_cache_revalidate on;
# proxy_cache_valid 200 1d;
# Delivering Cached Content When the Origin is Down
proxy_cache_use_stale error timeout invalid_header updating
http_500 http_502 http_503 http_504;
# Do all updates in background. With proxy_cache_use_stale, allows stale
# cached responses to be served.
proxy_cache_background_update on;
}
}
Я также добавил resolver 127.0.0.11 ipv6=off valid=15s;
к моему блоку http.Однако, когда я повторно внедряю свой API, и он получает новый API, nginx все еще пытается отправить на старый IP.
Я запускаю тег контейнера nginx nginx:1.15.12-alpine
, когда я устанавливаю bind-tools на контейнер nginx. Я вижу, что я получаю новые IP-адреса, используя dig tasks.api
.потеря что попробовать дальше.Я могу жестко закодировать частные IP-адреса, но это не так, как в докере ...