Nginx Ingress Controller:宿主变量的目的是什么?

帕勃罗·埃斯特拉达(Pablo Estrada)

我有这个Nginx入口控制器:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    kubernetes.io/ingress.allow-http: "true"
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    # Limit uploads to 8TB
    nginx.ingress.kubernetes.io/proxy-body-size: 800000m
spec:
  rules:
  - host: myhost.info
    http:
      paths:
      # NOTE: this one should come after all other routes. To avoid hijacking requests.
      - path: /api/walrus(/|$)(.*)
        backend:
          serviceName: service-a
          servicePort: 8080
      - path: /api(/|$)(.*)
        backend:
          serviceName: service-b
          servicePort: 8080
      - path: /(.*)
        backend:
          serviceName: frontend
          servicePort: 8080
  - http:
      paths:
      # NOTE: this one should come after all other routes. To avoid hijacking requests.
      - path: /api/walrus(/|$)(.*)
        backend:
          serviceName: service-a
          servicePort: 8080
      - path: /api(/|$)(.*)
        backend:
          serviceName: service-b
          servicePort: 8080
      - path: /(.*)
        backend:
          serviceName: frontend
          servicePort: 8080

我重复了这些路径,只是弄清楚了。我的问题是,添加host密钥与不添加密钥的最终结果有什么不同

到目前为止,我一直使用它,因为如果没有它,我会将我的POST请求重定向到get请求,如以下问题所示:Kubernetes NGINX Ingress将HTTP请求从POST更改为GET

但是我还注意到,在EKS上,如果我确实添加主机,则入口只会返回所有内容的404,直到我删除它并仅使用http leavit。所以我对此有些困惑,希望有人在这里阐明正确的做事方式。

此外,对于生产环境,如何将主机正确设置为公共域以及如何设置tls证书?

大卫·钱德勒

关于HTTPS:https : //aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/#bGA9CAkdlMh的“定义入口资源(使用SSL终止)以将流量路由到上面创建的服务”,展示了如何在nginx-ingress处终止TLS。即使您没有使用AWS Network Load Balancer(NLB),这也可能会有所帮助。对于具有NLB的AWS,您还有另一种选择,可以在NLB处终止:https : //aws.amazon.com/blogs/aws/new-tls-termination-for-network-load-balancers/

nginx入口控制器有两个,目前尚不清楚您使用的是哪一个。nginxinc控制器需要一个“主机”。另一个是https://github.com/kubernetes/ingress-nginx,我不确定。当您使用TLS时,nginx将SNI用于HTTPS,这似乎需要一个“主机”:http : //nginx.org/en/docs/http/configuring_https_servers.html#sni

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Nginx Ingress:找不到服务“ ingress-nginx-controller-admission”

NGINX Ingress Controller隐藏Nginx版本

使用 Helm chart 安装 Nginx Ingress Controller

使用多个Ingress-nginx控制器时,Ingress资源从错误的Ingress Controller获取地址

错误:getaddrinfo ENOTFOUND ingress-nginx.ingress-nginx-controller.svc.cluster.local

使用NGINX Ingress Controller执行命令行参数的命令是什么?

Nginx-Ingress-Controller限制要部署的rps数

Nginx Ingress Controller在Google Kubernetes Engine上找不到节点

AWS EKS上的Nginx-ingress-controller的多个副本

nginx-ingress-controller 中的粘性会话不起作用

如何使用Nginx-ingress-controller Kubernetes公开localhost气流

无法通过Nginx-ingress-controller访问Kubernetes ClusterIP服务

为什么 nginx 在我的 Kubernetes Ingress 路由上返回 404?

ingress-nginx-controller-admission:它有什么作用?为什么在那里

如何在Kubernetes Nginx Ingress Controller中将Nginx IP附加到X-Forwarded-For

在Kubernetes的Nginx Ingress对象中设置代理传递的最佳方法是什么

HTTPS重定向不适用于Nginx-ingress-controller的默认后端

使用Nginx Ingress Controller在413状态代码上添加自定义响应

使用带有Google登录插件的Ingress NGINX Controller在GKE中公开Jenkins

Ingress-Nginx-Controller找不到在Google Cloud Platform上部署的第二项服务

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

为什么我的Nginx Ingress控制器给出503s?

Kubernetes Nginx Ingress文件上传返回502

Google通过Nginx Ingress管理SSL证书

kubernetes nginx.ingress多个websocket服务

kubernetes nginx.ingress多个websocket服务

从ingress-nginx提供静态文件

Kubernetes Nginx Ingress RabbitMQ管理和Kibana

在Nginx反向代理后面运行的Kubernetes Ingress