问题标签 [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.
nginx - nginx 入口和重写目标
我有一个响应 /api/ 请求的 pod
我想重写对 /auth/api/ 的请求转到 /api/ 的位置。
使用 Ingress (nginx),我认为使用 ingress.kubernetes.io/rewrite-target: 注释我可以这样做:
然而,正在发生的事情是 /auth/ 正在传递给服务/pod,并且正确地抛出了 404。我一定是误解了重写注释。
有没有办法通过 k8s & ingresses 做到这一点?
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/随机
我得到的回应是
如何连接我的入口和入口控制器以使路由正常工作?
nginx - nginx-ingress 适用于 /,但不适用于子路径
我已经设置了一个基于名称的入口控制器,但它似乎不适用于/
.
所以http://metabase.domain.com
有效,但http://metabase.domain.com/style/app.css
没有。
这是我的配置:
从 nginx.conf 中的一切看起来也很正常。由于某种原因,nginx 访问和错误日志也是空的,所以也无法从那里找到任何东西
kubernetes - Kubernetes 集群中没有传出网络连接
我已经构建了具有 3 个工作节点和一个管理节点的集群。工作节点部署并设置了 kube-dns 和 calica。每台机器都有自己的外部 IP 和关联的 DNS。我成功运行了 nginx-ingress-controller 并且它的默认 404-endpoint 可以从外部访问。
现在,问题是由于某种原因不允许工作人员中的 pod 建立出站连接。当我将 exec 放入 pod 时,我无法 curl 也无法 ping,即使网络似乎在 pod 内配置得很好。我试图检查 calico 配置,但它非常混乱,我不知道它怎么可能是错误的。是否有任何默认的 calico/k8s 设置禁止从其节点传出连接?或者也许有人面临类似的问题?
我将按需提供日志输出,因为我不确定在检查这个问题时哪些信息是宝贵的。
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 相同的功能。
也许有一条我看不到的中间道路
谢谢您的帮助
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
.
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 地址的客户端始终路由到同一个后端服务器)。
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 时重定向太多)。
现在似乎根本没有发生重定向。
我的入口服务定义为:
我的配置图定义为:
并且,入口定义为:
nginx - Kubernetes nginx 入口:仅为一个子域设置 client_max_body_size
如何client_max_body_size
为单个子域设置参数?我有一台服务器可以接受高达 5TB 的文件上传。我看过的所有示例都向您展示了如何全局设置它。我的 ingress.yaml 中有多个规则,我不希望每个规则都继承client_max_body_size
参数,只有文件上传服务器应该。
在上面的 ingress.yaml 中,我只想为位于 hostclient_max_body_size
的服务设置。storage
storage.example.com
kubernetes - 无法通过 SSL 终止使用 cert-manager 和 nginx 入口控制器
我正在 GKE 上尝试使用 SSL 终止的 nginx-ingress 以用于用例。我已经访问了数百万个有关此过程的博客,这些博客使用 cert-manager 和 nginx 入口控制器,但在我的情况下它们都不起作用。
这当然意味着我做错了什么。但我不确定是什么。这是我所做的:
- 创建在 ClusterIP 上公开的示例应用程序
- 部署 nginx-ingress
- 创建发行人
- 使用颁发者创建 nginx 入口。
结果:
描述 nginx 入口后,事件区域显示none
. 这意味着一切都是空白的。请求证书、http 验证等没有发生任何事情。
nginx入口:
clusterissuer.yml:
我不确定是否还有其他需要做的事情。