問題タブ [netflix-zuul]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - Zuul で別のホストへのリダイレクトを回避するには?
Spring Cloud Netflixで使われているリバースプロキシのZuulで遊んでみました。春のブログ ( https://spring.io/blog/2015/02/03/sso-with-oauth2-angular-js-and-spring-security-part-v )にあるチュートリアルからプロジェクトを開始しました。
しかし、Zuul の役割を正しく理解できたかどうかはわかりません。
localhost:8080/login にアクセスすると、Zuul が私の要求をプロキシ化して localhost:8080 にとどまると思ったのですが、localhost:9999/uaa/login への 302 リダイレクトが発生しました。
構成されている zuul ルートは次のとおりです。
zuul:
routes:
resource:
path: /resource/**
url: http://localhost:9000/resource
login:
path: /login/**
url: http://localhost:9999/uaa/login
user:
path: /user/**
url: http://localhost:9999/uaa/user
auth:
path: /auth/**
url: http://localhost:9999/uaa/
常に localhost:8080 にとどまることは可能ですか?
完全なプロジェクトは github で入手できるため、ローカルで実行できます: https://github.com/hlassiege/oauth-social-zuul
docker - Docker コンテナーのランダムな外部ポートがあるにもかかわらず、Eureka を使用する
フロントに zuul ベースのリバース プロキシを備えたいくつかのスプリング ブート ベースのマイクロサービスで構成されるアプリケーションを作成しています。
自分のマシンでサービスを開始すると機能しますが、サーバーのロールアウトのためにサービスに docker を使用したいのですが、これは今のところ不可能のようです。
通常、コンテナの外側には固定の「内部」ポートとランダム化されたポートがあります。しかし、コンテナー内のアプリは、外部ポート (および IP) を知りません。
Netflix のツールは、私が効率的なマイクロサービス アーキテクチャを書きたいと思っていたものと一致しており、概念的には Docker が本当に好きです。私が見る限り、コンテナーを起動し、ホストの外部ポートを収集してアプリに渡すのは非常に面倒です。アプリの起動後にポートを単純に変更することはできないからです。
Docker ベースのクライアントで eureka を使用する方法はありますか?
[更新] 問題の説明が不十分だったと思います。だから多分これはそれをもう少し明確にします:
eureka サーバー自体は docker で実行できます。1 つしかなく、外部ポートは関係ありません。リンク機能を使用して、クライアントからアクセスできます。
問題は、クライアントが自分自身を登録する URL です。これはたとえばhttps://localhost:8080/ですが、動的ポート割り当てのため、実際にはhttps://localhost:54321/経由でしかアクセスできません。
そのため、eureka はサービスに対して間違った URL を返します。
更新 以下の回答を更新しましたので、そちらをご覧ください。
spring-cloud - 私のzuulアプリケーションのRibbonRoutingFilterを置き換える
RibbonRoutingFilter
zuul パッケージに組み込まれている既存のものを、追加の特性/カスタマイズを持つカスタムのものに置き換えたいと考えています。
独自のものを作成し、組み込みのものよりも先にトリガーする優先度を与えるのは単なるケースですか? これを 2 回呼び出したくありません。
実際、最後の点を明確にするために、私のバージョンが組み込みのバージョンに取って代わることを望みます。のコピーを作成しRibbonRoutingFilter
、カスタマイズを追加したところ、思い通りに動作しましたが、オリジナルRibbonRoutingFilter
も呼び出されました。どうすればそれを抑制できますか、それは可能ですか。
提案?前もって感謝します
angularjs - Zuul を使用しない SpringBoot + OAuth2
私は現在、次の 3 つの主要部分で構成される SpringBoot アプリケーションを構築しています。
- フロントエンド サーバー (AngularJS を使用しているフロントエンド アプリケーション用)
- 認証サーバー (認証に OAuth2 を使用しています)
- Resource Server (フロントエンドに RESTServices を提供)
私はすでに非常に便利なチュートリアルを見つけました。これは私にとってはうまくいきます。しかし、フロントエンドで Zuul Proxy を省略する方法はあるのでしょうか? フロントエンド angularJS アプリケーションからリソース エンドポイント 'localhost:9000/resource' を直接呼び出したいと考えています。
既に CORSFilter をリソース サーバーに追加しました (この手順では、このチュートリアルを使用しました)
しかし、AngularJS アプリケーションからリクエストを送信すると、リソース サーバーは HTTP 401 エラーで応答しますが、認証サーバーに対して既に認証されています。
RESTServiceを提供するブラウザとサーバー間の通信をFiddlerで解析してみました。これを行うことで、AngularJS アプリケーションがリクエスト ヘッダーでセッション ID を送信しないことがわかりました。
私の問題の解決策を探し続けることができる場所はありますか?
よろしく、フロリアン