2017-10-09 69 views
0

我有一個應用程序,它提供一個動態的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://stackoverflow.com/a/35541525/1695906)設置爲0。否則默認情況下,CloudFront緩存錯誤響應5分鐘。如上所述,「年齡:116」幾乎是2分鐘的時間,如果你現在和之後解決了問題,你就不會看到它,並且不會有原始服務器日誌條目。 –

回答

0

從另一條路徑提供文件服務的流程如下:

  • 添加所有必要的起源(在這種情況下mydomain.com/path/app_idmydomain.com(無拖尾/))
  • 您ditribution添加行爲的每一個文件類型。在這種情況下,靜態文件存儲在不同的文件夾中(如/img)。所以我們可以添加img/*js/*css/*的行爲。然後,每個行爲可以設置爲單一來源。在這種情況下,我們選擇mydomain.com,此前名稱爲Static files origin