我有一个带有nginx-ingress的kubernetes集群,我尝试使用nginx.ingress.kubernetes.io/from-to-www-redirect注释将http://test.domain.com重定向到http://www.test.domaine.com。
但它似乎不起作用。
我的入口资源:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
rules:
- host: www.test.domain.com
http:
paths:
- path: /
backend:
serviceName: app
servicePort: 8080
- host: test.domain.com
http:
paths:
- path: /
backend:
serviceName: app
servicePort: 8080我已经尝试了很多配置,但是我不能让它工作。nginx.ingress.kubernetes.io/from-to-www-redirect注释没有任何效果!
发布于 2020-11-19 16:12:19
这是一个社区维基答案。您可以随意扩展它。
为了使其正常工作,您还需要使用nginx.ingress.kubernetes.io/configuration-snippet annotation。例如:
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($host = 'example.com' ) {
rewrite ^ https://www.example.com$request_uri permanent;
}正如@apoorvakamath在评论中提到的,你可以参考this guide获得一个逐步详细的例子:
代码片段是解决方案的巧妙之处。它允许您向入口控制器添加动态配置。我们使用它来检测非www形式的URL的使用,然后简单地发出重写,该重写被推送(并通过您的域返回)到www表单。
发布于 2022-01-18 10:06:00
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: webui-ingress
namespace: default
annotations:
kubernetes.io/ingress.allow-http: 'false'
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Frame-Options: SAMEORIGIN";
more_set_headers "X-Xss-Protection: 0";
more_set_headers "Referrer-Policy: use strict-origin-when-cross-origin";
if ($host = 'test.domain.com' ) {
return 301 https://www.test.domain.com ;
}
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/proxy-body-size: 10m
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/session-cookie-hash: sha1
nginx.ingress.kubernetes.io/session-cookie-name: route
nginx.ingress.kubernetes.io/ssl-passthrough: 'true'
nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
tls:
- hosts:
- test.domain.com
secretName: test-tls
- hosts:
- www.test.domain.com
secretName: www-tls
rules:
- host: test.domain.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: webui
port:
number: 8022
- host: www.test.domain.com
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: webui
port:
number: 8022添加以下注释后,您的域名将重定向到www
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "X-Frame-Options: SAMEORIGIN";
more_set_headers "X-Xss-Protection: 0";
more_set_headers "Referrer-Policy: use strict-origin-when-cross-origin";
if ($host = 'test.domain.com' ) {
return 301 https://www.test.domain.com ;
}https://stackoverflow.com/questions/64777939
复制相似问题