2017-11-07 12 views
0

これを動作させるには戦います。私は2つのサービスで構成されたアプリを持っています。フロントエンドはAngular、バックエンドはNodeです。dispatch.yamlの同じドメインに2つのサービスを設定する

派遣:

- url: "<frontend-app>-dot-apt-aleph-767.appspot.com/" 
    service: <frontend-app> 
    - url: "<frontend-app>-dot-apt-aleph-767.appspot.com/backend/" 
    service: <backend-app> 

これはgcloud app describeから出力されます:

dispatchRules: 
- domain: <frontend-app>-dot-apt-aleph-767.appspot.com 
    path:/
    service: <frontend-app> 

- domain: <frontend-app>-dot-apt-aleph-767.appspot.com 
    path: /backend/* 
    service: <frontend-app> 

私はフロントエンドアプリのURLに移動すると予想されるとして、それが動作します。しかし、<frontend-app>-dot-apt-aleph-767.appspot.com/backendに行くと私は404になります。バックエンドURLに直接移動すると、期待通りに機能するので意味がありません。

plzhalp。

答えて

1

これを有効にするには、同じ方法で/<somepath>/backend/<somepath>へのリクエストを処理するバックエンドサービスが必要です。

バックエンドアプリのログを確認すると、処理が予想されていたが、404で応答したリクエストは/backendのプレフィックスを含んでいますが、バックエンドURLに直接行くリクエストはありません。

ディスパッチルールの順序が重要であることにも注意してください。より具体的なものが最初に必要な場合は、より一般的なものがその前のリクエストと一致するため、そして、あなたはリクエストのパス上にもいくつかのワイルドカードを配置することがあります。

dispatch: 
- url: "<frontend-app>-dot-apt-aleph-767.appspot.com/backend/*" 
    service: <backend-app> 
- url: "<frontend-app>-dot-apt-aleph-767.appspot.com/*" 
    service: <frontend-app> 

さらに精錬この:

  • それは冗長であるとして、最後のURLをドロップすることができます - それはdefault routing by URL行動
  • ですバックエンドサービスは/backend/*を処理する必要があるため、1番目のURLのホスト部分をワイルドカードにすることもできます。これは、appspot.comとカスタムドメインの両方で使用可能です。

だからこれで十分です:

dispatch: 
- url: "*/backend/*" 
    service: <backend-app> 

別の方法としては、ディスパッチファイルから"<frontend-app>-dot-apt-aleph-767.appspot.com/backend/" URLをドロップして受け入れるようにフロントエンドサービスを教えるが、それはに認識された任意の/backend/<somepath>要求をリダイレクトすることができます。

+0

これはありがとうございます。問題を解決するために私を正しい道のりに置いてください!!! – Mina

関連する問題