Nginx externalname Azure CDN 超时

Nginx externalname Azure CDN times out

我的开发人员在前往 domain.com 时需要以下内容:

将几乎所有路径路由到后端服务器(我为此设置了一个入口)

将某些路径(即域。com/site.webmanifest)直接路由到 Azure CDN

目前我有3个文件。工作入口 (1),使用指向 CDN 的外部名称的服务 (2) 和特定路径的第三个入口 (3)。

遗憾的是,无论我做什么,我总是收到 504 错误。我还担心入口规则会失败,因为具有同一主机的 2 个单独的入口文件将合并(我不希望第二个重写目标)。

NginX日志结果如下:

[error] 9499#9499: *26224546 [lua] balancer.lua:332: balance(): error while setting current upstream peer IP-ADDRESS invalid port while connecting to upstream, client: K8S-IP-ADDRESS, server: domain.com, request: "GET /site.webmanifests HTTP/2.0", host: "domain.com"

2021/09/23 07:51:39 [error] 9499#9499: *26224546 upstream timed out (110: Operation timed out) while connecting to upstream, client: K8S-IP-ADDRESS, server: domain.com, request: "GET /site.webmanifests HTTP/2.0", upstream: "https://0.0.0.1:80/site.webmanifests", host: "domain.com"

它抱怨端口无效。我已经尝试使用以下标签设置第二个入口:

nginx.ingress.kubernetes.io/upstream-vhost: cdn.address.com
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

并指定端口名:

port:
  name: https

但无济于事。我找到了这个 post:

Kubernetes Service Object ExternalName pointing to Azure CDN

里面的语句我想是不可能的,但是我不明白,建议alternative/solution。

如有任何建议,我们将不胜感激。

亲切的问候

因为我只有有限数量的 URL 必须重定向,所以我修改了入口 (1) yaml 并删除了服务和其他入口。

我添加了以下注释:

nginx.ingress.kubernetes.io/server-snippet: |
  location = /robots.txt {
     proxy_pass https://cdn.domain.com/robots.txt;
  }

这似乎很有魅力,不过我愿意接受其他选择。