为什么我的Angular前端(带有AWS负载均衡器的容器)API调用没有击中我的Nodejs后端(带有AWS LB的容器



我已经测试了这个设置,它在本地100%工作,但我无法让它在AWS上工作。

前端角

设置:

  • 负载均衡器有公共DNS。
  • 端口80和443上的监听器。443有SSL证书。
  • 可用区均为3 us east (Public))
  • 安全组允许来自我的LB安全组的HTTP/HTTPS流量,允许端口80/443的0.0.0.0/0流量。
  • ECS集群有一个正在运行的服务和一个任务(FARGATE)主机端口80。

后台节点

设置:

  • 负载均衡器有公共DNS。
  • 端口80和443上的监听器。443有SSL证书。
  • 可用区都是3 us east (Private))
  • 安全组允许来自我的LB安全组的HTTP/HTTPS流量,允许端口80/443的0.0.0.0/0流量。
  • ECS集群有一个正在运行的服务和一个任务(FARGATE)主机端口80。

两者在同一个VPC中。请注意,后端负载均衡器有一个健康检查,它会命中/API/healthcheck的API路由,并且它会工作。

当访问站点时,我有一个简单的测试设置,Angular将运行一个http请求来访问API backendloadbalancer.DNS.com/api/ig。我知道这个调用是由console.log触发的。

角代码:

gettest(id): Observable<IG[]> {
console.log('IG HAS BEEN TOUCHED');
const url = hosturl + 'ig';
const httpOptions = {
headers: new HttpHeaders({
'Access-Control-Allow-Origin':  '*',
'Content-Type': 'application/json',
'Authorization': ls
}),
withCredentials: true,
params: {
'id': id,
}
};
return this._http.get(url, httpOptions)
.pipe(
map((res) => {
console.log(res);
return <IG[]> res;
})
);
}

后端有如下路由文件:

const express = require('express');
const router = new express.Router();
const ig = require('../controllers/ig.js');
router.get('/ig', console.log('API HIT!'),  ig.get);

超时后失败。从来没有看到任何控制台日志API HIT。它似乎根本没有击中它。同样,这些都在本地工作。

是一个有效的处理程序:

router.get('/ig', (req, res, next) => {console.log('API HIT!'); next()},  ig.get);
在您的示例中,console.log

在服务器启动时调用,而不是在请求时调用。我相信它也不适用于本地主机,因为生成的urlconst url = hosturl + 'ig';是错误的,或者,另一方面,它可能已经在aws上工作了,而您只是没有处理程序,这就是为什么它失败了

相关内容

  • 没有找到相关文章

最新更新