【发布时间】:2022-01-18 08:38:39
【问题描述】:
我有一个 Route53 和 EKS 环境。
我在 EKS ingress-controller 中写了几个域名,现在我需要使用 URL 访问每个目录。
如果您有一个域名“example.com”,并且它有一个前缀,您希望将前缀视为域名之后的目录。 (例如:main.example.com -> example.com/main) (例如:settings.example.com -> example.com/settings)
换句话说,如果您在浏览器的 URL 中输入“main.example.com”,它将访问正在路由的 pod example.com/main。
我在这个问题上花费了大量的工作时间。 你知道解决办法吗?
这是我的“ingress.yaml”的一部分。
enter code here
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: "ingress"
namespace: "public"
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/listen-ports:
'[{"HTTP":80,"HTTPS": 443}]'
alb.ingress.kubernetes.io/certificate-arn: ****secret****
nginx.ingress.kubernetes.io/server-snippet: |
server {
location / {
server_name ~^(?<name>[\w-]+)\.example\.com$;
proxy_pass http://example.com/$name;
proxy_set_header Host $host;
}
}
labels:
app: develop-app
spec:
rules:
- host: main.example.com
http:
paths:
- path: /*
backend:
serviceName: "hook"
servicePort: 8080
- host: settings.example.com
http:
paths:
- path: /*
backend:
serviceName: "hook"
servicePort: 8080
- host: example.com
http:
paths:
- path: /*
backend:
serviceName: "hook"
servicePort: 8080
【问题讨论】:
-
例如,我试着给它起一个全名,像这样 server_name "main\.example\.com"; proxy_pass example/main;但是,我想知道为什么当我在 URL 中输入“main.example.com”时,它不会被视为“example.com/main”。
标签: kubernetes kubernetes-ingress amazon-eks