Openshift TLS Edge终止与Payara Server配合重定向异常排查
问题背景
在Payara社区版(v5.2020.6)上部署了JSF Web应用,通过Deployment Config YAML文件部署到Azure Openshift项目中。配置Openshift Service暴露Deployment Config创建的Pod,同时创建Route实现公网访问:
- 使用Passthrough TLS终止的安全Route时,应用可正常访问,但客户端显示Payara默认证书,安全性感知不足。
- 改为Edge TLS终止(使用Openshift默认证书,解密后流量直接发送到Payara处理HTTP请求的8080端口,尽量不在Payara端配置证书)时,出现如下错误:
This page isn’t working
app-domain.ose-dev.com redirected you too many times.
Try deleting your cookies.
ERR_TOO_MANY_REDIRECTS
相关配置
Service配置
apiVersion: v1 kind: Service metadata: name: my-app spec: externalTrafficPolicy: Cluster ports: - name: http-8080 port: 8080 protocol: TCP targetPort: 8080 - name: https-8181 port: 8181 protocol: TCP targetPort: 8181 - name: ssl-443 port: 443 protocol: TCP targetPort: 443 - name: admin-listener-4848 port: 4848 protocol: TCP targetPort: 4848 selector: name: my-app type: LoadBalancer
Route配置
apiVersion: route.openshift.io/v1 kind: Route metadata: name: my-app spec: port: targetPort: 8080 to: kind: Service name: my-app
Payara Server配置
http-listener-1 | enabled and listening on port 8080 http-listener-2 | enabled, secured and listening on port 8181 ssl-listener |. enabled, secured and listening on port 443 No redirection from 8080 to any secure port (8181 or 443)
技术疑问解答
1. Edge终止时出现重定向循环的原因
尽管已确认Payara未配置8080到HTTPS端口的显式重定向,仍存在两种核心可能:
- 请求头触发的隐式重定向:Openshift Edge终止后,会向Payara转发带
X-Forwarded-Proto: https的HTTP请求。如果JSF应用的安全约束、Payara的全局安全配置或第三方依赖检测到原始请求为HTTPS,但当前请求协议是HTTP,会自动发起HTTPS重定向;Router收到HTTPS请求后再次解密为HTTP转发,形成循环。 - Payara listener配置异常:若
http-listener-1的secure属性被误设为true,或应用部署描述符中的安全约束要求CONFIDENTIAL传输级别,Payara会强制将HTTP请求重定向到HTTPS端口,引发循环。
2. 客户端HTTPS请求的Router端口选择逻辑
Openshift Router完全遵循**Route配置中指定的targetPort**转发流量,与Service的443端口无关:
- 客户端发起HTTPS请求到Router后,Router完成Edge TLS终止,会按照Route的
targetPort: 8080配置,将解密后的HTTP流量转发到Service的8080端口,最终路由到Pod的8080端口。 - Service的443端口仅在Route配置为Passthrough TLS终止且明确指向该端口时,才会被Router使用。
3. Route的Insecure Traffic Policy作用范围
该策略仅针对Router接收的入站非TLS(HTTP)流量,控制Router如何处理这类请求:
- 可选值包括:
Allow(直接转发HTTP请求到Service)、Redirect(将HTTP请求重定向到HTTPS)、Disabled(拒绝HTTP请求)。 - 它不影响Router转发到Service的流量协议和端口,转发规则由Route的
port配置单独决定。
内容的提问来源于stack exchange,提问作者Mausam Shrestha
相关产品推荐
相关产品推荐

