【问题标题】:How to disable http access to service using Kubernetes Nginx ingress controller?如何使用 Kubernetes Nginx 入口控制器禁用对服务的 http 访问?
【发布时间】:2021-11-19 10:01:45
【问题描述】:

我有一项服务提供了我希望只能通过 https 访问的 API。我不希望http 重定向到https,因为这会暴露凭据并且调用者不会注意到。最好得到错误响应。

如何配置我的 ingress.yaml?请注意,我想为同一集群中的其他服务维护从 httphttps 的默认 308 重定向。

谢谢。

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes,您是如何设置集群的?您是否使用裸机安装或某些云提供商?您是否尝试使用任何annotations?如果是,是哪些?你想完全阻止http还是强制https?
  • 它是安装了 kubeadm 的裸机 v1.21.0。我找不到任何注释来禁用 http 或使用 nginx 配置 sn-p 的方法。我希望 http 返回 400 或 403。我们正在使用 nginx.ingress.kubernetes.io/force-ssl-redirect: "true" 强制 https 用于其他服务。

标签: http kubernetes https nginx-ingress


【解决方案1】:

documentation:你可以阅读以下关于通过重定向强制执行HTTPS的句子:

默认情况下,如果为该入口启用了 TLS,控制器会重定向 (308) 到 HTTPS。如果要全局禁用此行为,可以在 NGINX 中使用 ssl-redirect: "false" ConfigMap

要为特定入口资源配置此功能,您可以在特定资源中使用 nginx.ingress.kubernetes.io/ssl-redirect: "false" 注释。

您还可以创建两种单独的配置:一种使用 http 和 https,另一种仅用于 http。

使用kubernetes.io/ingress.class注解可以选择要使用的入口控制器。

此机制还为用户提供了运行多个 NGINX 入口控制器的能力(例如,一个服务于公共流量,一个服务于“内部”流量)。

另请参阅 thisthis 类似问题。

【讨论】:

  • 好的,所以最重要的是,如果没有多个 nginx 入口控制器和单独的入口,它就无法完成。那是一种痛苦。
猜你喜欢
  • 2019-06-29
  • 2017-04-30
  • 2018-10-16
  • 2020-07-25
  • 2020-12-28
  • 1970-01-01
  • 2018-10-29
  • 2021-05-12
  • 2021-01-04
相关资源
最近更新 更多