我在我的 GKE 集群中使用 ingress-nginx 来公开我的服务。我有 2 个不同的 GKE 集群(v1.19.12-gke.2101),它们都使用 ingress-nginx(图表 v4.0.6)。
在这些集群上,我使用 oauth-proxy 公开一些服务。它在第一个集群上完美运行,但在路径/test/上有 404 的第二个集群上却不行。我已经调查了很长时间,但没有找到可能导致此问题的原因。我发现的主要区别在于位置不同的nginx.conf文件。这是区别:
第一个集群(工作):
location ~* "^/test(/|$)(.*)/" {
第二个集群(不工作):
location /test(/|$)(.*)/ {
这是用于此行的入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/auth-url: "<auth-url>"
nginx.ingress.kubernetes.io/auth-signin: "<auth-signin>"
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required'
kubernetes.io/tls-acme: 'true'
ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/proxy-body-size: 500m
cert-manager.io/cluster-issuer: "letsencrypt-prod-dns01"
name: service-oauth
namespace: default
spec:
rules:
- host: "test.com"
http:
paths:
- path: "/test(/|$)(.*)"
pathType: ImplementationSpecific
backend:
service:
name: test
port:
number: 1234
ingressClassName: nginx
tls:
- secretName: test-tls
hosts:
- "test.com"
我检查了所有配置文件(入口、服务),没有发现任何差异。如果您知道问题可能出在哪里,请告诉我。
谢谢你的帮助。