2017-02-20 11 views
0

アングルアプリケーションを複数のアマゾンインスタンス(10以上)にデプロイしたい。各インスタンスについて、バックエンドAPIも変更されます。私はNGとバックエンドのURLを指定する環境ファイルでAPIのURLをハードコーディングし、私の角2アプリでコマンドラインからバックエンドapi urlを渡すには?

ng serve --environment=prod 

以下のように環境を変更したくない

ng serve --backendApiUrl=http://www.example.com/api. 

いる可能性があり、以下のように仕えます?

+0

あなたの例ではng serve(開発)を使用していますが、あなたの質問はデプロイメント(ng build)に関するものです。あなたの問題が開発にしかない場合は、プロキシを使用することができます(angle-cliで動作します)。これらの環境問題は、実際にあなたのアプリケーションによって解決されるべきではありませんが、サーバ設定(プロキシも使用して解決する必要があります)で解決する必要があります。 – MikeOne

+0

@MikeOne:サーバー設定でどのように修正できますか? – Jyothish

+0

理想的には、アプリケーションでは、バックエンドAPI(/ apiなど)への相対パスを使用する必要があります。あなたのサーバーでは、/ apiを実際のバックエンドのapi URLにマップするために、プロキシを使用することができます(Apacheを使用する場合はmod_proxyを使用し、proxyPassを設定できます)。 – MikeOne

答えて

0

そのままの状態では使用できません。

最初のオプションは、ロードバランサの背後にバックエンドのapi URLを置くことです。変更がある場合は、configを1つ更新する必要があります。負荷分散の利点も得られます。 AWS Elastic Load BalancingやNetflixのようなものが役に立ちます。

これを行うことはできないと仮定すると、ng serveコマンドにはその機能がありません( ng serve source)。ですから、あなたの最善の選択肢は、それを引数とするbashスクリプトを作成し、ng2を使用するために保存することです。 明らかに、あなたの角度コードは既にバンドルされているので、webpackなどでビルド時にできるように、コードに注入/織り込む方法はありません。しかし、角度が引かれるファイルは、バックエンドAPIを定義します。次に、bashスクリプトはURLを更新するためにこのファイルを上書きするだけです。

関連する問題