问题标签 [nginx-ingress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
74504 浏览

nginx - nginx 入口和重写目标

我有一个响应 /api/ 请求的 pod

我想重写对 /auth/api/ 的请求转到 /api/ 的位置。

使用 Ingress (nginx),我认为使用 ingress.kubernetes.io/rewrite-target: 注释我可以这样做:

然而,正在发生的事情是 /auth/ 正在传递给服务/pod,并且正确地抛出了 404。我一定是误解了重写注释。

有没有办法通过 k8s & ingresses 做到这一点?

0 投票
3 回答
9521 浏览

nginx - 为什么我的裸机 kubernetes nginx 入口控制器返回 308?

我正在尝试将 nginx 入口控制器添加到我的 kubernetes 集群。我当前的集群有 3 个节点,它们之间都有开放的防火墙规则。(注意:这是一个用于教育目的的裸机集群)

我已经使用以下配置创建了一个部署

运行 kubectl create -f file.yaml 后

我看到所有 pod 和服务都在运行。在集群中,我可以卷曲该服务 ip 并从 pod 获得响应。

现在我去创建一个入口。

我首先按照https://github.com/kubernetes/ingress-nginx/tree/master/deploy上的安装步骤进行操作

我可以看到我的入口控制器正在运行。

然后我使用以下文件创建我的入口

然后我运行 kubectl get services --all-namespaces 来查找我的入口控制器端口。

现在我去 curl 我的服务器:

得到的响应是:

我希望能从我的 pod 中得到响应。但是我总是得到308。

如果我卷曲一条随机路径

卷曲我的服务器:30652/随机

我得到的回应是

如何连接我的入口和入口控制器以使路由正常工作?

0 投票
2 回答
9933 浏览

nginx - nginx-ingress 适用于 /,但不适用于子路径

我已经设置了一个基于名称的入口控制器,但它似乎不适用于/.

所以http://metabase.domain.com有效,但http://metabase.domain.com/style/app.css没有。

这是我的配置:

从 nginx.conf 中的一切看起来也很正常。由于某种原因,nginx 访问和错误日​​志也是空的,所以也无法从那里找到任何东西

0 投票
1 回答
2618 浏览

kubernetes - Kubernetes 集群中没有传出网络连接

我已经构建了具有 3 个工作节点和一个管理节点的集群。工作节点部署并设置了 kube-dns 和 calica。每台机器都有自己的外部 IP 和关联的 DNS。我成功运行了 nginx-ingress-controller 并且它的默认 404-endpoint 可以从外部访问。

现在,问题是由于某种原因不允许工作人员中的 pod 建立出站连接。当我将 exec 放入 pod 时,我无法 curl 也无法 ping,即使网络似乎在 pod 内配置得很好。我试图检查 calico 配置,但它非常混乱,我不知道它怎么可能是错误的。是否有任何默认的 calico/k8s 设置禁止从其节点传出连接?或者也许有人面临类似的问题?

我将按需提供日志输出,因为我不确定在检查这个问题时哪些信息是宝贵的。

0 投票
1 回答
15200 浏览

istio - Istio 和(或对比)Nginx 入口控制器

我正在测试 Istio,目前我即将测试路由流量的“金丝雀”功能。

对于我的测试,我创建了一个由 5 个微服务(serviceA、serviceB、serviceC、serviceD、serviceE)组成的小型 servicemesh。每个人都可以呼叫其他人。我只是通过像 A,E,C,B,B,D 这样的路径,请求遵循这条路径。为了从集群外部调用我的服务网格,我有一个Nginx 入口控制器,其入口规则指向 serviceA pod

这工作正常。

我面临的问题涉及使用这样的自定义标头匹配的流量切换:

所以在这里,当我将自定义标头x-internal-request设置为 true时,我想尝试将流量路由到 ServiceA 的 v2 版本。

问题

  • 为了使用此功能,我的服务是否必须知道 x-internal-header 并且必须将其传递给请求中的下一个服务?或者他们不需要处理它,因为 Istio 为他们完成了这项工作?

  • 为了使用此功能,我是否需要使用 Istio Ingress Controller(带有 Istio 网关)而不是 Nginx Ingress Controller?

今天,我正在使用 Nginx Ingress Controller 来公开我的一些服务。我们选择 Nginx 是因为它有一些功能,比如“外部授权”,可以为我们节省大量工作,如果我们需要使用 Istio Ingress 控制器,我不确定它是否提供与 Nginx 相同的功能。

也许有一条我看不到的中间道路

谢谢您的帮助

0 投票
1 回答
1525 浏览

nginx - 仅使用 nginx Ingress 重写特定路由

我的后端运行了三个服务,入口路由定义如下:

问题是myapp-api已经在监听对/api/v1/myresource. 在当前配置下,myapp-api服务仅提供对myapp.westeurope.cloudapp.azure.com/api/api/v1/myresource(请注意 .../api/api/...)的请求。

是否可以通过 myapp-api 服务为请求提供服务,但在不创建另一个 Ingress 的情况下为/api服务重写这些请求?/因此,myapp-api 应该向myapp.westeurope.cloudapp.azure.com/api/v1/myresource.

0 投票
1 回答
1029 浏览

kubernetes - NGINX 入口控制器:我可以终止 TLS 并传递非 http 流量吗?

我正在尝试在 Kubernetes 中部署 DNP3 服务器(一种工业协议)。DNP3 使用 TCP 通信,但它是一个有状态协议。我目前正在部署入口控制器配置。

我意识到入口控制器是为 http/https 流量而设计的,但如果可能的话,我想使用它们并利用一些固有特性(例如双向 TLS、白名单等)。NGINX 入口控制器是否要求将传入流量格式化为 http 流量(例如具有标头等)?如果它接收到随机 TCP(非 http)流量,它可以简单地将流量传递给后端服务吗?

我正在尝试使用的注释包括:

几点注意事项:

  • 我意识到 auth-tls-pass-certificate 注释会添加一个标题。我希望我可以从标头中读取证书信息,然后从消息中删除标头/其他 https 数据。
  • 我希望 ot 使用 ip_hash lb-method 以允许应用程序是有状态的(具有一致 IP 地址的客户端始终路由到同一个后端服务器)。
0 投票
1 回答
6129 浏览

amazon-web-services - AWS 上的 Kubernetes HTTP 到 HTTPS 重定向,ELB 终止 SSL

我正在尝试为流向 Kubernetes 集群的流量设置一个简单的 HTTP 到 HTTPS 重定向。SSL 终止发生在 ELB 上。当我尝试使用nginx.ingress.kubernetes.io/ssl-redirect = true它时,它会导致无限重定向,这导致我设置了一个配置映射来处理这个问题(nginx-ingress:启用 force-ssl 时重定向太多)。

现在似乎根本没有发生重定向。

我的入口服务定义为:

我的配置图定义为:

并且,入口定义为:

0 投票
1 回答
3442 浏览

nginx - Kubernetes nginx 入口:仅为一个子域设置 client_max_body_size

如何client_max_body_size为单个子域设置参数?我有一台服务器可以接受高达 5TB 的文件上传。我看过的所有示例都向您展示了如何全局设置它。我的 ingress.yaml 中有多个规则,我不希望每个规则都继承client_max_body_size参数,只有文件上传服务器应该。

在上面的 ingress.yaml 中,我只想为位于 hostclient_max_body_size的服务设置。storagestorage.example.com

0 投票
1 回答
244 浏览

kubernetes - 无法通过 SSL 终止使用 cert-manager 和 nginx 入口控制器

我正在 GKE 上尝试使用 SSL 终止的 nginx-ingress 以用于用例。我已经访问了数百万个有关此过程的博客,这些博客使用 cert-manager 和 nginx 入口控制器,但在我的情况下它们都不起作用。

这当然意味着我做错了什么。但我不确定是什么。这是我所做的:

  1. 创建在 ClusterIP 上公开的示例应用程序
  2. 部署 nginx-ingress
  3. 创建发行人
  4. 使用颁发者创建 nginx 入口。

结果:

描述 nginx 入口后,事件区域显示none. 这意味着一切都是空白的。请求证书、http 验证等没有发生任何事情。

nginx入口:

clusterissuer.yml:

我不确定是否还有其他需要做的事情。