配置Kubernetes Nginx Ingress非通配符域名时返回404问题求助
问题根因
你的Ingress配置存在YAML语法结构错误,host和http路由规则被错误拆分为两个独立的rule条目:
原错误配置片段:
rules: # 第一条规则:仅匹配host为tradephlo.local的请求,但没有配置任何路径路由规则 - host: "tradephlo.local" # 第二条规则:没有指定host,匹配所有未命中其他host规则的请求,配置了路径路由 - http: paths: ...
当你访问tradephlo.local时,请求会命中第一条没有路由规则的空规则,自然返回404。
为什么改通配符后正常
你将host改为*.tradephlo.local时,tradephlo.local作为根域名无法命中通配符规则,请求会落到第二条带路由的无host规则上,所以访问正常。但这是巧合,不是正确配置。
修复方案
将host和http配置归到同一个rule条目下即可,修改后的rules段如下:
rules: - host: "tradephlo.local" # 注意这里http前面没有减号,和host属于同一个规则项 http: paths: - path: /api/main/?(.*) pathType: Prefix backend: service: name: tradephlo-main-srv port: number: 4000 - path: /api/integration/?(.*) pathType: Prefix backend: service: name: tradephlo-integration-srv port: number: 5000 - path: /?(.*) pathType: Prefix backend: service: name: tradephlo-client-srv port: number: 3000
修复后无需使用通配符域名,单个域名的SSL证书即可正常使用。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

