nginx-ingress:启用force-ssl时重定向太多
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx-ingress:启用force-ssl时重定向太多,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2391字,纯文字阅读大概需要4分钟。
内容图文
![nginx-ingress:启用force-ssl时重定向太多](/upload/InfoBanner/zyjiaocheng/950/9d51da3f21434f2894aa819e514a795f.jpg)
我正在使用nginx-ingress在kubernetes中建立我的第一个入口.我设置了ingress-nginx负载均衡器服务,如下所示:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "ingress-nginx",
"namespace": "...",
"labels": {
"k8s-addon": "ingress-nginx.addons.k8s.io"
},
"annotations": {
"service.beta.kubernetes.io/aws-load-balancer-backend-protocol": "tcp",
"service.beta.kubernetes.io/aws-load-balancer-proxy-protocol": "*",
"service.beta.kubernetes.io/aws-load-balancer-ssl-cert": "arn....",
"service.beta.kubernetes.io/aws-load-balancer-ssl-ports": "443"
}
},
"spec": {
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": "http",
"nodePort": 30591
},
{
"name": "https",
"protocol": "TCP",
"port": 443,
"targetPort": "http",
"nodePort": 32564
}
],
"selector": {
"app": "ingress-nginx"
},
"clusterIP": "...",
"type": "LoadBalancer",
"sessionAffinity": "None",
"externalTrafficPolicy": "Cluster"
},
"status": {
"loadBalancer": {
"ingress": [
{
"hostname": "blablala.elb.amazonaws.com"
}
]
}
}
}
注意https端口如何将其targetPort属性指向端口80(http),以便在负载均衡器处终止ssl.
我的ingress看起来像这样:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: something
namespace: ...
annotations:
ingress.kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
rules:
- host: www.exapmle.com
http:
paths:
- path: /
backend:
serviceName: some-service
servicePort: 2100
现在,当我导航到网址时,我收到了太多的重定向错误.令我困惑的是,当我添加以下标题“X-Forwarded-Proto:https”时,我得到了预期的响应(curl https://www.example.com -v -H“X-Forwarded-Proto:https “).
我有什么想法可以解决这个问题?
附:这对于ingress.kubernetes.io/force-ssl-redirect:“false”来说效果很好,而且似乎没有任何无关的重定向.
解决方法:
这是SSL重定向的注释与ELB上的代理协议和SSL连接的终止相结合的已知问题.
>您应该为Nginx-Ingress创建自定义ConfigMap,而不是使用force-ssl-redirect注释,如下所示:
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: ingress-nginx
name: nginx-ingress-configuration
namespace: <ingress-namespace>
data:
ssl-redirect: "false"
hsts: "true"
server-tokens: "false"
http-snippet: |
server {
listen 8080 proxy_protocol;
server_tokens off;
return 301 https://$host$request_uri;
}
该配置将创建一个额外的侦听器,只需简单重定向到https.
>然后,将ConfigMap应用于入口控制器,将NodePort 8080添加到其容器定义和服务中.
>现在,您可以将ELB的端口80指向服务的端口8080.
有了这个额外的倾听者,它就会起作用.
内容总结
以上是互联网集市为您收集整理的nginx-ingress:启用force-ssl时重定向太多全部内容,希望文章能够帮你解决nginx-ingress:启用force-ssl时重定向太多所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。