在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以获取静态文件?我真的不明白是什么问题。
谢谢!
从另一条路径提供文件服务的流程如下:
- 添加所有必要的起源(在这种情况下
mydomain.com/path/app_id
和mydomain.com
(无拖尾/
)) - 您ditribution添加行为的每一个文件类型。在这种情况下,静态文件存储在不同的文件夹中(如
/img
)。所以我们可以添加img/*
,js/*
和css/*
的行为。然后,每个行为可以设置为单一来源。在这种情况下,我们选择mydomain.com
,此前名称为Static files origin
。
我尝试添加两个来源'mydomain/path/app_id'和'mydomain',但它没有任何区别 –
查看您的服务器日志以查看实际请求的内容。另外,在测试时将您的[错误缓存最小TTL](https://*.com/a/35541525/1695906)设置为0。否则默认情况下,CloudFront缓存错误响应5分钟。如上所述,“年龄:116”几乎是2分钟的时间,如果你现在和之后解决了问题,你就不会看到它,并且不会有原始服务器日志条目。 –