2017-12-02 34 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