2017-12-02 24 views
2

2つの異なるローカルホストで動作するように角度アプリを設定しようとしています。Angularアプリケーションでプロキシを使用すると、504(ゲートウェイタイムアウト)エラーが発生する

プロジェクトルートにbackendフォルダを作成し、echo.phpファイルを追加しました。

:アンギュラアプリを起動する

ngOnInit(){ 
    this.http.get('http://localhost:4200/backend/echo.php').subscribe(data => { 
     console.log(data);  
    }); 
    } 

:私はecho.phpを取得しようと

{ 
    "/backend/**": { 
    "target": "http://localhost:80", 
    "secure": false 

    } 
} 

:プロジェクトのルートでは、私はまた、follwingコンテンツにproxy.conf.jsonを作成しました

ng serve --port 4200 --host 0.0.0.0 --proxy-config proxy.conf.json 

ブラウザコンソールでは、504 error Gateway Timeoutが表示されています。ターミナルで、エラーは少し違って聞こえます:

[HPM] Error occurred while trying to proxy request /backend/echo.php from localhost:4200 to http://localhost:80 (ENOTFOUND) 

私は何が間違っているのか分かりません。あなたは正しい方向に私を向けることができますか? 私はこのURLで直接角度のない(ポート80で動作している)サーバー上のファイルにアクセスできます:http://localhost/backend/echo.php

EDIT:

echo.php:

<?php 
echo "data from php"; 
+0

エラーが直接あなたのバックエンドを消費したときにエラーが出る場合の角に関係していないようです。あなたは 'php'として質問をタグ付けし、Angularコードの代わりにあなたのPHPコードと関連する設定を追加する運が多くあります。 (PHPフレームワークを使用していますか?それも含めてください) – MondKin

+0

http://localhost/backend/echo.phpを使用してリソースに直接アクセスする際にエラーは発生しません。エラーは、localhost:4200からlocalhost:80にプロキシするときにだけスローされます。 – sanjihan

+0

あなたのコードを試したところ、私のマシンで動作します。 ''ターミナルで言うと、エラーは少し違って見える "'、curlを使って端末からサーバを呼び出すのですか、 '' ng serve'で記録されたメッセージを意味していますか?カールした場合に使用するコマンドを投稿できますか?また、どのシステム/コンテナでこれを実行していますか? – MondKin

答えて

0

私はng serveとプロキシ試していないが、何私のために働いたことのルートディレクトリにあるバックエンドアプリや角部をしていますフォルダ名viewまたはfront-endなどのサブディレクトリに保存します。同様の問題がnodejsの場合はLaunch angular 4 from Hapi jsを確認してください。ご不明な点がございましたら、お気軽に詳細をお尋ねください。

1

多くの時間の後、私は本当の問題を発見しました。これは、proxy.conf.jsonでターゲットを指定することに由来します。これは正しいです:

{ 
    "/backend/*": { 
    "target": "http://127.0.0.1", 
    "secure": false, 
    "changeOrigin":true, 
    "logLevel": "debug" 
    } 
} 

そして、これではありません。

{ 
    "/backend/*": { 
    "target": "http://localhost", 
    "secure": false, 
    "changeOrigin":true, 
    "logLevel": "debug" 
    } 
} 

これは自分自身でng serveを実行することが可能であることではないと接続することができます。

ng serve 

コマンドはエラーを返します。

getaddrinfo ENOTFOUND localhost 
Error: getaddrinfo ENOTFOUND localhost 
    at errnoException (dns.js:28:10) 
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26) 

これは、古い問題であり、私はこのエラーの底にやったことがなかったです。代わりに、私はそれを回避するためにng serve --port 4200 --host 0.0.0.0を使用しました。

誰かがこれがなぜ機能するのか説明できるのはすばらしいことです。私/etc/hostsファイルには、以下の内容があります。

127.0.0.1  localhost 
255.255.255.255 broadcasthost 
::1    localhost 
192.168.1.1  router.hm 
127.0.0.1 My-MBP # added by Apache Friends XAMPP 
関連する問題