kubernetes - 入口将域 www 重写为非 www url
问题描述
我正在尝试将我的域“www.test.example.com”重定向到test.example.com
在入口中,我添加了注释
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($host = 'www.test.wotnot.io' ) {
rewrite ^/(.*)$ https://app.test.wotnot.io/$1 permanent;
}
它没有按预期工作。
为了测试我试过这个
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($host = 'test.example.com' ) {
rewrite ^/(.*)$ https://google.com/$1 permanent;
}
这工作正常。
我的网站正在处理test.example.com
和 ssl 证书。
整个入口
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
certmanager.k8s.io/cluster-issuer: wordpress-staging
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
#nginx.ingress.kubernetes.io/configuration-snippet: |
#if ($host = 'www.test.wotnot.io' ) {
# rewrite ^/(.*)$ https://test.example.io/$1 permanent;
#}
name: wordpress-staging-ingress
spec:
rules:
- host: test.example.io
http:
paths:
- backend:
serviceName: wordpress-site
servicePort: 80
path: /
tls:
- hosts:
- test.example.io
secretName: wordpress-staging
解决方案
Ingress 有一个注释nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
,它已经处理了这个:
www.domain.com
在某些情况下,需要从to 重定向,domain.com
反之亦然。要启用此功能,请使用注释nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
注意:对于 HTTPS 到 HTTPS 重定向是强制性的,位于 Ingress 的 TLS 部分的 Secret 中定义的 SSL 证书包含证书公用名中的 FQDN。
最好使用它而不是对抗/调整configuration-snippet
注释。
推荐阅读
- vega-lite - 将图表标题与 y 轴上数字的左侧对齐
- javascript - 节点仅从文件中读取前 N 个字节/字符
- reactjs - react typescript:没有重载匹配此调用-将react-redux连接到组件
- javascript - 反应从父包装传递道具到子
- cefsharp - Cefsharp : NotReadableError: Could not start audio source
- python - 根据 pandas 中多列的条件删除随机 N 行
- mysql - 列出特定时间段内账户的所有交易
- python - Why I receive error pyodbc.Error: ('HY000', 'The driver did not supply an error!')
- c - 逐个字符地从文本文件中读取多行时出现分段错误
- c# - 在 DataTemplate 中将按钮弹出命令绑定到 ViewModel 的命令