使用 envoy,在 nginx 中使用集群 IP 和 fqdn 作为 proxy_pass 的地址有什么不同?

问题描述

我正在尝试在 Kubernetes 1.20.2(内部部署)上测试 Istio 1.9

首先,当Nginx proxy_pass有tomcat部署服务的fqdn时

location /  {
            proxy_pass              http://tomcat.default.svc.cluster.local:8080;
            proxy_http_version      1.1;
            proxy_set_header        Connection "";
            proxy_redirect          off;
            proxy_set_header        Host    $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto  $scheme;
        }

虽然显示 404 错误,但它不起作用,我在 Nginx pod 中找不到任何从 tcpdump 到 tomcat 的 tcp 数据包。

其次,如果我把proxy_pass中的fqdn改成tomcat pod的clusterIP或者pod IP,效果很好。

最后,如果我删除注入 Nginx 的 istio sidecar(envoy),它可以与 proxy_pass 中的 fqdn 一起使用。

在这种情况下,当fqdn与envoy一起使用时,为什么proxy_pass不起作用? Nginx 与 envoy 有什么必要的配置吗?

鉴于 clusterIP 可以更改,我可以预期 fqdn 会被普遍使用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)