Redirect 如何使用nginx入口控制器将www url重定向到无www url?
我试图让url www.example.com重定向到example.com,同时在k8s1.11.1中保留原始请求的所有内容 我试图使用一个简单的入口来实现这一点,然后使用注释来重定向它Redirect 如何使用nginx入口控制器将www url重定向到无www url?,redirect,kubernetes-ingress,nginx-ingress,Redirect,Kubernetes Ingress,Nginx Ingress,我试图让url www.example.com重定向到example.com,同时在k8s1.11.1中保留原始请求的所有内容 我试图使用一个简单的入口来实现这一点,然后使用注释来重定向它 apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/tls-acme: "true" kubernetes.io/ingress.class: "nginx" nginx
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/permanent-redirect: https://example.com
nginx.ingress.kubernetes.io/ssl-redirect: "True"
name: example-redirect
spec:
tls:
- hosts:
- www.example.com
secretName: example-tls
rules:
- host: www.example.com
http:
paths:
- backend:
serviceName: example
servicePort: http
这里的问题是我不想有任何规则/后端。我只是想使用入口将www.example.com重定向到example.com,但k8s入口要求我有规则。这里有什么解决方法吗?实际上,resource已经为相关API定义了严格的先决条件。您可以从常规配置中排除rules:字段,但是应该明确指定backend:,以便在没有声明或匹配规则的情况下将网络流量路由到目标端点
每当您通过或为Nginx Ingress controller创建任何特定设置时,这两个选项都会执行相同的任务,将某些特定配置应用于驻留在Nginx Ingress controller Pod上的底层Nginx.conf文件。这意味着入口控制器将服务器{}和位置{}块应用到特定主机对应的Nginx web服务器Pod中:
server {
server_name www.example.com ;
listen 80;
listen [::]:80;
set $proxy_upstream_name "-";
listen 443 ssl http2;
listen [::]:443 ssl http2;
.............
location / {
set $namespace "default";
set $ingress_name "example-redirect";
set $service_name "example";
set $service_port "http";
set $location_path "/";
......................
}
}
因此,我假设您可以根据Ingress资源配置捕获nginx.conf文件,然后在Ingress控制器吊舱内独立应用它
我假设您也可以考虑使用NGNX.IGRES.KubNET.IO/OFF到WWW重定向:TURE以实现当前场景中的目标。
以下应该做:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($host = 'www.example.com' ) {
rewrite ^ https://example.com$request_uri permanent;
}
name: example-redirect
spec:
tls:
- hosts:
- www.example.com
secretName: example-tls
rules:
- host: www.example.com
http:
paths:
- backend:
serviceName: example
servicePort: http