You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenShift同一主机双Route配置问题:路径流量被拦截如何解决?

解决OpenShift同主机Route路径冲突:特定路径跳过TLS客户端认证

你的问题根源在于passthrough类型的Route工作在TCP层,OpenShift路由器(HAProxy)会直接转发所有到该主机443端口的流量,不会解析HTTP路径,导致/some-path的Route无法被命中。以下是无需修改主机或应用路径的解决方案:

方案:将全局Route改为reencrypt终止模式

把需要客户端认证的根路径Route从passthrough改为reencrypt,这样路由器可以终止TLS连接、验证客户端证书,同时解析HTTP路径实现精准匹配。更长的路径(如/some-path)会被优先匹配,其余流量走根路径的认证路由。

调整后的完整配置:

# 处理/some-path的路由,无需客户端认证
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: route-path
spec:
  host: example.com
  path: "/some-path"
  to:
    kind: Service
    name: my-service
    weight: 100
  port:
    targetPort: http
  tls:
    termination: edge 
    insecureEdgeTerminationPolicy: None
---
# 处理所有其他路径的路由,要求TLS客户端认证
apiVersion: route.openshift.io/v1 
kind: Route
metadata:
  name: route-root
spec:
  host: example.com
  path: "/"
  to:
    kind: Service
    name: my-service
    weight: 100
  port:
    targetPort: https
  tls:
    termination: reencrypt 
    insecureEdgeTerminationPolicy: None
    # 填入用于验证客户端证书的CA证书
    caCertificate: |
      -----BEGIN CERTIFICATE-----
      # 你的客户端CA证书内容
      -----END CERTIFICATE-----
    # 可选:如果服务需要路由器提供客户端证书,填写以下内容
    # clientCertificate: |
    #   -----BEGIN CERTIFICATE-----
    #   ...
    #   -----END CERTIFICATE-----
    # key: |
    #   -----BEGIN RSA PRIVATE KEY-----
    #   ...
    #   -----END RSA PRIVATE KEY-----

关键说明:

  • reencrypt模式:路由器先验证客户端证书(使用你提供的CA),再重新加密流量转发到服务的HTTPS端口,既保留了客户端认证要求,又能利用HTTP路径匹配逻辑。
  • 路径优先级:OpenShift Route会优先匹配更长、更具体的路径,因此/some-path的路由会优先于/的路由被命中。
  • edge模式:针对/some-path的路由使用edge终止,路由器直接终止TLS后转发HTTP流量到服务的http端口,无需客户端认证。

内容的提问来源于stack exchange,提问作者Jakob Graf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:20:34