总结证书配置
1.证书首先分为两种配置方式,
1) 一种是在集群中配置
2) 一种是在上游负载均衡中配置。
1)https证书在集群中配置,并域名直接解析到集群的ingress-nginx-controller所在服务器的IP
2).证书配置到上游负载均衡:(证书配置在哪,哪里做重定向以及请求头):
证书配置在上游时,上游要增加 proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-Port 443;并且重定向到https上,通过80端口负载到后端ingress-nginx-controller:
说明:上述两种情况都需修改comfigmap (nginx-configuration) 内容如下:
kubectl edit cm nginx-configuration -n ingress-nginx
data:
use-forwarded-headers: "true"
http-redirect-code: '301' #301转发兼容低版本内核浏览器配置
max-worker-connections: '65531' #更改连接数
proxy-connect-timeout: '720' #连接超时时间
server-tokens: 'false' #关闭nginx版本号
并且kubernetes得coredns不要配置为内网解析IP 域名,否则访问taskcenter等项目会遇到证书TLS问题。
特殊: 如果上游不做域名强转:我们这里开启ssl-redirect: "true"
并且 nginx.ingress.kubernetes.io/app-root: /taskcenter 改成nginx.ingress.kubernetes.io/app-root: https://xxx/taskcenter
证书处于上游时 80 和 443 端口转为指向下游得80时,需要做如下操作
nginx-configuration 开启 use-forwarded-headers: 'true'
1. X-Forwarded-Proto 强制传https
2. X-Forwarded-Port 强制传443端口
如sso和apis得域名与其canvas得不同,那么sso和apis也要上述条件满足
满足以上要求部署不会出现问题
如何检查上述是否加对,在pod中进行tcpdump抓包
抓包命令为: sudo tcpdump -XX -vvv -nn -w a.log