リクエストからダブル スラッシュを削除する

問題: リクエストにダブル スラッシュを使用すると、リクエストが解決されない

リクエストには 2 つ以上の連続したスラッシュが含まれていると、404 エラーが発生する可能性がありますたとえば、/hello//world/ のような場合です。この例では、helloworld の間の「//」が問題となります。

解決策: ダブル スラッシュを除外する

Istio Ingress に構成を適用して、リクエスト内のダブル スラッシュをフィルタし、置換します。

  1. apigee-merge-slash-filter.yaml という名前の新しい構成ファイルを作成します。
  2. このファイルに次の内容を貼り付けます。
    apiVersion: networking.istio.io/v1alpha3
    kind: EnvoyFilter
    metadata:
      name: apigee-merge-slashes
      namespace: istio-system
    spec:
      workloadSelector:
        labels:
          app: istio-ingressgateway
      configPatches:
      - applyTo: NETWORK_FILTER # http connection manager is a filter in Envoy
        match:
          context: GATEWAY
          listener:
            filterChain:
              filter:
                name: "envoy.http_connection_manager"
        patch:
          operation: MERGE
          value:
            typed_config:
              "@type": "type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager"
              merge_slashes: true
  3. 次のコマンドを使用して構成を適用します。
    kubectl apply -f apigee-merge-slash-filter.yaml