マルチテナントのServiceStackを使用してAPIを作成しています。私たちはリバースプロキシ(nginxやhaproxyのようなもの)を使って物を編み上げるのではなく、DNSベースのロードバランシングとルーティングをしたいと思っています。マルチテナントServiceStack API、異なるホスト名の要求に応答する同じデプロイメント?
テナントパラメータを持つRequest DTOがあります。 ServiceStack(およびそのSwaggerFeature)を使用すると、カスタムルートを定義し、パス、クエリ、ヘッダー、または本文から値を読み取ることができるようにDTOを文書化できます。
DTOプロパティーもホスト名パターンから値を読み取ることができるように、私たちはどのように配線しますか?ですから、ルートとホスト名の一致から値を取るようにしますか?我々はまた、
https://{tenant}.{DNS zone for environment}/{rest of path with tokens}
のようなURL持っているしたいと思います
- DNSゾーンアウトは、私たちがしているどの環境によって異なります - 非生産我々が使用するために(例えば)testing-foobar.com
生産はreal-live.com
です。理想的には、単一のルート宣言で両方をサポートすることができます(実行時に命令型宣言の代わりにリクエストDTOを装飾する方が好ましい場合はAppHost.Init
)。
私の最初の傾向は、[リクエストとレスポンスのフィルタ](https://github.com/ServiceStack/ServiceStack/wiki/Request-and-response-filters)を使用することです。 –
私は 'Tenant'プロパティを持つカスタムの' ITenant'インターフェースを実装しているリクエストDTOを注入するリクエストフィルタを使用したいと思います。別の解決策は、AbsoluteUriまたはRawUrlプロパティを検査するすべてのサービス内で再利用できる 'IHttpRequest.Tennant()'拡張メソッドを使用することです。 – mythz
@mythz - これをServiceStackでどのように実装するかの例がありますか? – Marek