问题
因此,我用node.js和express创建了一个简单的http web服务器(主要是express应用程序生成器的框架(。然后我将服务器上传到AWS Beanstalk网络环境中。
问题是,如果我连接到服务器,就无法从服务器加载资源(CSS和javascript(。我得到一个net::ERR_CONNECTION_TIMED_OUT
如果我在浏览器中打开网站,用于加载所有资源。
我认为问题是关于豆茎的get请求使用了一个";https";url,
Request URL: https://...elasticbeanstalk.com/javascripts/GameLogic.js
因为它在我的本地主机上工作,但在那里它使用了一个";http";url。
Request URL: http://localhost:3000/javascripts/GameLogic.js
此外,html站点本身加载(在资源超时之后(;http";请求
Request URL: http://....elasticbeanstalk.com/
你能将AWS Beanstalk Web环境中的头请求url(用于CSS、JS(更改为使用http而不是https吗?或者在HTML或Node.js上更改它?
信息
服务器使用node.js头盔模块。然后我只发送我的html页面的传入请求:
app.get('/', function(req, res, next) {
res.sendFile(path.join(__dirname + "/public/main.html")); //Um bei / als pfad die main.html zu geben
});
在html页面中,我请求资源:
<link rel="stylesheet" type="text/css" href="stylesheetsstyle.css">
<script src="/javascripts/jquery.min.js"></script>
<script src="/javascripts/GameLogic.js"></script>
解决方案尝试
我尝试过不使用头盔,但该版本的行为完全相同,如果它在beanstall上,就不会加载ressource(在localhost服务器上,它总是有效的(。
我还尝试更改一些安全组规则,允许从所有源到负载平衡器的端口443上的https,以及从负载平衡器到ec2实例的端口443的https。情况没有改变。
然后我尝试将https请求重定向到http
app.get('/', function(req, res, next){
console.log("redirect to http?");
res.redirect('http://' + req.headers.host + req.url);
});
但是该网站甚至没有加载html,因为";到许多重定向";。
因此,目前我对如何使https请求工作或如何将其更改为http请求没有想法。
注释
我也在使用学生帐户,所以我无权使用AWS证书管理器或将ELB重定向到HTTPS,如果这与此有关的话。
好吧,node.js的头盔模块出了故障。我不知道是什么把标题改成了https,hsts似乎只是其中的一部分。
但在完全删除后,我和其他人可以访问该网络应用程序并加载资源。
我在早些时候的测试中没有发现它的原因是:移除头盔后,我从未删除或重新生成我的包锁。所以它还在里面。现在我卸载了它,并在上传到AWS Beanstalk之前制作了一个新的包锁定。