gpt4 book ai didi

docker - Nginx 缓存 DNS 查找并忽略我的解析器设置

转载 作者:行者123 更新时间:2023-12-02 02:26:02 25 4
gpt4 key购买 nike

我正在使用 docker swarm。我在 API 前面放置了一个 nginx 容器以进行缓存。由于每次部署 API 时,它都会创建一个新的内部 IP,因此我根据 swarm 文档使用我的服务tasks.api 的名称。下面是我的位置 block

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 block 中。但是,当我重新部署 API 并获得新的 API 时,nginx 仍会尝试发送到旧 IP。

我正在运行一个 nginx 容器标签 nginx:1.15.12-alpine 当我在 nginx 容器上安装绑定(bind)工具时,我可以看到我正在使用 dig 任务获取新的 IP .api

我不知道下一步该尝试什么。我可以对私有(private) IP 进行硬编码,但这不是 docker 方式...

最佳答案

NGINX will only do DNS lookups at startup and cache forever for fixed hostnames 。要在运行时启用 DNS 查找,您需要将固定主机名更改为动态变量。因此,在 OP 情况下,将原始 proxy_pass 行更改为:

set $target_host tasks.api ;
proxy_pass http://$target_host:10010;

关于docker - Nginx 缓存 DNS 查找并忽略我的解析器设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56486489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com