我使用 HAProxy
将所有请求从80端口重定向到443并使用NodePort进入 traefik-ingress-controller
(v1.6.6,在Kubernetes集群内) .
这里 HAProxy.conf
:
frontend http-frontend
bind *:80
reqadd X-Forwarded-Proto:\ http
default_backend http_app
frontend https-frontend
bind *:443 ssl crt /etc/ssl/certs/my-cert.pem
reqadd X-Forwarded-Proto:\ https
default_backend traefik_app
backend http_app
redirect scheme https if !{ ssl_fc }
backend traefik_app
server traefik localhost:30010 check
在我的Kubernetes集群上运行的每个应用程序都有一个Ingress .
其中我有一个Keycloak pod(v4.1.0,用于身份验证)和这个入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: keycloak
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: login.myapp.it
http:
paths:
- backend:
serviceName: keycloak
servicePort: 8080
这是一张图片:
当我连接到https://login.myapp.it/auth/admin/时,我被重定向到https://login.myapp.it:80/auth/admin/master/console/(注意端口80),我收到 SSL_ERROR_RX_RECORD_TOO_LONG
错误 .
有人对代理后面的keycloak的重定向问题有一些提示吗?
先感谢您 .
2 回答
听起来你错过了入口上的TLS证书:
然后:
希望能帮助到你!
我使用以下traefik注释解决了我的问题:
traefik.frontend.passHostHeader: "true"
将客户端 Host 标头转发到后端 .
这是一个完整的入口示例:
在替代方案中,我可能已添加到 haproxy.cfg 以下内容:
reqadd X-Forwarded-Port:\ 443