【发布时间】:2021-01-29 17:47:19
【问题描述】:
我有这个 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 changes HTTP request from a POST to a GET
但我也注意到,在 EKS 上,如果我确实添加了主机,则入口只会为所有内容返回 404,直到我将其删除并仅使用 http 离开。所以我对此有点困惑,希望有人在这里澄清做事的正确方法。
另外,对于生产环境,如何将主机正确设置为公共域以及如何设置 tls 证书?
【问题讨论】:
-
这能回答你的问题吗? Ingress with and without host