2017-12-02 232 views
2

我試圖設置角度應用以使用2個不同的本地主機。在Angular應用中進行代理時出現504(網關超時)錯誤

我在項目根目錄下創建了一個backend文件夾,並在其中添加了echo.php文件。在項目的根,我也創建proxy.conf.json與follwing內容:

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

    } 
} 

我嘗試獲取與echo.php:

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

啓動角應用:

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

編輯:

echo.php:

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

如果直接使用後端時出現錯誤,則錯誤與Angular看起來沒有關係。你將會有更多的運氣將問題標記爲'php',並且包含你的PHP代碼和相關配置,而不是Angular代碼。 (您是否使用了一些PHP框架?也包括在內) – MondKin

+0

直接使用http://localhost/backend/echo.php訪問資源時,我沒有收到任何錯誤。從localhost代理時只出現錯誤:4200到localhost:80 – sanjihan

+0

我剛試過你的代碼,它在我的機器上工作。當你說''在終端中,這個錯誤聽起來有點不同',你是否使用curl從終端調用你的服務器,或者你的意思是'ng serve'記錄的消息?如果捲曲,你可以發佈你使用的命令嗎?另外,你在運行這個系統/容器? – MondKin

回答

0

我沒有嘗試過代理與ng serve,但什麼工作對我來說是一種在根目錄下的後端應用和角部分的子目錄下的文件夾名稱viewfront-end或任何你喜歡的。點擊這裏查看Launch angular 4 from Hapi js,發現類似的問題,但使用nodejs。如果您有任何問題,請隨時索取更多詳細信息。

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