我正在努力让我的 nginx 入口(在 AWS EKS 上)使用路径规则和 TLS。
入口来自 here
来自 Ingress 的片段如下所示:
spec:
tls:
- hosts:
- example.com
secretName: ingress-tls
rules:
- host: example.com
- http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 443
此入口创建 AWS 网络负载均衡器,其 URL 类似于
https://xyz.elb.us-west-1.amazonaws.com/
我正在更新
ingress-tls
使用证书的秘密
cert-manager
。
当我使用 NLB URL 访问入口时
https://xyz.elb.us-west-1.amazonaws.com/api
,我明白了
api-service
符合预期)当我使用正确的域访问入口时,例如
https://example.com/api
这就是我想要做的,我明白了:
404
,它不遵守我的路径规则,然后转到
upstream-default-backend
代替。example.com
那
cert-manager
已配置。我尝试删除
host: example.com
来自
rules:
,这给了我:
example.com
,我想自从
规则中缺少 host
,但不确定确切原因。谁能帮我弄一下
我在这里不知所措。
答案 0 :(得分:1)
在盯着这个看了几个小时之后,挖掘了令人讨厌的 lua 块,这是
nginx.conf
为此,我找到了!也许有一天有人会遇到这个问题,并且可能会觉得这很有用。
问题是:
rules:
- host: example.com
- http:
这是定义(我认为)一个
host
没有转发规则,然后一些
http
没有主机的转发规则。我的意图显然是转发规则适用于主机。
那就是:
rules:
- host: example.com
http:
我不得不说,如果可能的话,我现在比以前更不喜欢 YAML 了。