在NodeJS Express前部署CloudFront

问题描述:

我有一个应用程序,它提供一个动态的html和一些用NodeJS/Express编写的静态文件。在NodeJS Express前部署CloudFront

我部署的AWS CloudFront的发行在它的面前,但是只有HTML经历,所有的静态文件导致404请求的标题是这样的:

Age:116 Connection:keep-alive Content-Length:170 Content-Security-Policy:default-src 'self' Content-Type:text/html; charset=utf-8 Date:Mon, 09 Oct 2017 14:37:23 GMT Server:nginx/1.6.2 Via:1.1 523db8f46d98334ac6b5debbf315e15b.cloudfront.net (CloudFront), 1.1 proxy1.xxx.yy (squid/4.0.17) X-Amz-Cf-Id:5UYpluGn8TxUxsxmmDYYiZnjbOWbZ7iFFit55mmgcN6IbAJHCEAX6Q== X-Cache:MISS from proxy1.xxx.yy X-Cache:Error from cloudfront X-Cache-Lookup:MISS from proxy1.xxx.yy:3128 X-Content-Type-Options:nosniff X-Powered-By:Express

有关信息,我的nodejs应用运行在某个端口,而nginx反向代理它到我使用proxy_pass指定的域。

正如你所看到的我落后于另一个代理,但这不是问题。

我相信正在发生的事情是,我的起源看起来像mydomain.com/path/app_id,并且express从mydomain.com/提供静态文件。

是否有人在NodeJS/Express之前成功部署了CloudFront以获取静态文件?我真的不明白是什么问题。

谢谢!

+0

我尝试添加两个来源'mydomain/path/app_id'和'mydomain',但它没有任何区别 –

+0

查看您的服务器日志以查看实际请求的内容。另外,在测试时将您的[错误缓存最小TTL](https://*.com/a/35541525/1695906)设置为0。否则默认情况下,CloudFront缓存错误响应5分钟。如上所述,“年龄:116”几乎是2分钟的时间,如果你现在和之后解决了问题,你就不会看到它,并且不会有原始服务器日志条目。 –

从另一条路径提供文件服务的流程如下:

  • 添加所有必要的起源(在这种情况下mydomain.com/path/app_idmydomain.com(无拖尾/))
  • 您ditribution添加行为的每一个文件类型。在这种情况下,静态文件存储在不同的文件夹中(如/img)。所以我们可以添加img/*js/*css/*的行为。然后,每个行为可以设置为单一来源。在这种情况下,我们选择mydomain.com,此前名称为Static files origin