首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >源站为ec2实例,无法使用云前端服务静态文件

源站为ec2实例,无法使用云前端服务静态文件
EN

Stack Overflow用户
提问于 2019-05-12 20:38:29
回答 1查看 428关注 0票数 0

我有一个web应用程序运行在Nginx反向代理后面的centos ec2实例上,带有SSL认证(让我们加密)。

我在URL处有一个javascript文件,例如https://example.com/static/src/js/allEnd.js

我使用CloudFront传递静态文件,并将源服务器作为HTTP ec2实例(不使用s3存储桶)。

我的源站映射到域名https://example.com,到目前为止我做了以下配置:

  1. www.example.com被重定向到Nginx
  2. 中的example.com CloudFront URL是我自定义域的别名,即example.com的cdn.example.com
  3. SSL是在Nginx上完成的,而example.com和example.com的SSL是在AWS上完成的。

到目前为止,我所理解的是,第一次CloudFront将通过从我的ec2服务器获取文件来提供静态内容,然后下一次它将从CloudFront提供服务,但每次CloudFront重定向到原始服务器以获取静态文件,而在我的情况下CloudFront不提供该文件。

这是源站和CloudFront服务器的标头。

代码语言:javascript
复制
1. Origin server (https://example.com)
get https://example.com/static/src/js/allEnd.js
HTTP/2 200
server: nginx/1.12.2
date: Sun, 12 May 2019 12:27:50 GMT
content-type: application/javascript
content-length: 168435
etag: "wzsdm-1557567525-168435-283837276"
cache-control: max-age=604800, public
expires: Sun, 19 May 2019 12:27:50 GMT
strict-transport-security: max-age=15768000; includeSubdomains; preload
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
strict-transport-security: max-age=15768000

2. CloudFront with origin as https://example.com (https://cdn.example.com)
get https://cdn.example.com/static/src/js/allEnd.js
HTTP/2 301
content-type: text/html
content-length: 185
location: https://example.com/static/src/js/allEnd.js
server: nginx/1.12.2
date: Sun, 12 May 2019 09:17:40 GMT
strict-transport-security: max-age=15768000; includeSubdomains; preload
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
strict-transport-security: max-age=15768000
age: 17
x-cache: Hit from cloudfront
via: 1.1 76d9b50884e58e2463b175e34e790838.cloudfront.net (CloudFront)
x-amz-cf-id: HBbfJXbFgKQz4eYlQSpLPQAk8pxZRKuGsb6YjFu8-AJL0JwPfs8FZw==

如您所见,cdn.example.com (CloudFront)重定向到源(example.com)的响应头。此外,我还混淆了应该是content-type: application/javascriptcontent-type:text/html

我可能配置错误的可能性有哪些?

如果你想知道更多,请随时询问。谢谢。

附言:我刚接触Nginx和AWS的配置,最重要的是缓存控制。

EN

回答 1

Stack Overflow用户

发布于 2019-05-13 02:30:15

您需要检查源站配置和日志文件,以了解发生这种情况的原因。

查看源站日志,原来产生301重定向响应的是源站,不是CloudFront。

请注意,来自CloudFront的响应头包括server: nginx/1.12.2。CloudFront没有添加这个。

Content-Type是按原样设置的,因为您的源服务器还返回了类似于"object has moved“或"you are redirected”之类的HTML。现代浏览器通常不会显示该消息,它们只是遵循重定向。

在任何情况下,如果源服务器返回重定向,CloudFront都不会跟随源服务器返回的重定向--它只是将重定向返回给浏览器。

对于您看到的行为,一种可能的解释是您将CloudFront中的源协议策略设置为“仅HTTPS”而不是“仅HTTPS”或“匹配查看器”,因此源尝试将连接重定向为使用HTTPS,因为它将传入连接(来自CloudFront)视为HTTPS而不是HTTPS。

另一种可能性是,您将CloudFront的缓存行为设置配置为将Host标头列入白名单,以便转发到源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56099327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档