在Angular应用中进行代理时出现504(网关超时)错误
我试图设置角度应用以使用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";
回答:
我没有尝试过代理与ng serve
,但什么工作对我来说是一种在根目录下的后端应用和角部分的子目录下的文件夹名称view
或front-end
或任何你喜欢的。点击这里查看Launch angular 4 from Hapi js,发现类似的问题,但使用nodejs。如果您有任何问题,请随时索取更多详细信息。
回答:
经过很多很多小时我发现了真正的问题。它起源于在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
以上是 在Angular应用中进行代理时出现504(网关超时)错误 的全部内容, 来源链接: utcz.com/qa/258116.html