【问题标题】:Can AWS CloudFront serve both dynamic and static content?AWS CloudFront 能否同时提供动态和静态内容?
【发布时间】:2017-07-13 12:34:27
【问题描述】:

我们有一个基于 Drupal7 的电子商务网站,我正在尝试将其托管在 AWS 中。我想知道,AWS CloudFront 可以同时用于提供静态和动态内容吗?也许,创建两个起源或类似的东西?不过只是一个疯狂的猜测。 使用 CDN 的原因是为我们的 js、css 和图像服务。这些文件存储在 EFS 中。我没有选择 S3,因为我觉得它很麻烦,我需要 Drupal 上的另一个 S3FS 模块并对其进行配置。简而言之,就是不想那样走。此外,我所在的地区没有 EFS,所以我不得不在爱尔兰托管网站,因此需要 CDN。 不过,是否可以在 CloudFront 之外同时提供静态和动态内容?

另一个问题是,CloudFront 是否支持自签名证书?在测试时,我使用自签名证书创建了一个测试域,但是当我将它提供给 CloudFront 时,它会引发错误。我认为使用自签名是不可能的,是吗?

PS。我将 Route53 指向 Cloudfront DNS

更新

让我解释一下我执行的整个步骤:

  1. 将自签名证书添加到 chrome 和我的系统,现在我看不到一个页面说它不安全.. 所以一切都很好,直到这里。 enter image description here

  2. 使用以下设置创建了 CloudFront:

一般

    Distribution ID E2RDLVLNKPEXQ9

    ARN arn:aws:cloudfront::xxxx:distribution/E2RDLVLNKPEXQ9

    Delivery Method Web

    Cookie Logging  Off

    Distribution Status Deployed

    Price Class Use All Edge Locations (Best Performance)

    State   Enabled

    Alternate Domain Names (CNAMEs) 
    *.kiirana11.com

    SSL Certificate Default CloudFront Certificate (*.cloudfront.net)

    Domain Name xxxx.cloudfront.net

    Custom SSL Client Support   -

    Supported HTTP Versions HTTP/2, HTTP/1.1, HTTP/1.0

    IPv6    Enabled

    Last Modified   2017-02-24 09:41 UTC+5:30

原产地

Origin Domain Name
xxxxelb-1927396229.eu-west-1.elb.amazonaws.com

Origin ID
PPRD-kirana11elb    

Origin SSL Protocols
TLSv1.2
TLSv1.1
TLSv1
SSLv3

Origin Protocol Policy
HTTP Only
HTTPS Only
Match Viewer

HTTP Port
80

HTTPS Port
443

行为

Path Pattern
Default (*)     

Origin
PPRD-kirana11elb

Viewer Protocol Policy
HTTP and HTTPS

Allowed HTTP Methods
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE

Cached HTTP Methods
GET, HEAD +OPTIONS 

Forward Headers
Whitelist

Whitelist Headers
CloudFront-Forwarded-Proto
Host

Object Caching
Use Origin Cache Headers
Minimum TTL
0
Maximum TTL
31536000
Default TTL
86400

Forward Cookies
All

Query String Forwarding and Caching
Forward all, cache based on all

Smooth Streaming
No

Restrict Viewer Access
No

Compress Objects Automatically
No

CloudFront 当前状态已启用并已部署

  1. 在 Route53 中加载 CloudFront。由于某种原因,它没有自动加载 A 名称,我不得不强制输入云端 DNS 名称。

  2. 已安装 Drupal CDN 模块

Mode 设置为“Origin Pull”,CDN 映射有 cLOUDfRONT url WITH https

现在开始问题:

[root@ip-10-1-36-192 ec2-user]# curl https://xxxx.cloudfront.net
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: The request could not be satisfied</TITLE>
</HEAD><BODY>
<H1>ERROR</H1>
<H2>The request could not be satisfied.</H2>
<HR noshade size="1px">
CloudFront wasn't able to connect to the origin.
<BR clear="all">
<HR noshade size="1px">
<PRE>
Generated by cloudfront (CloudFront)
Request ID: Fvf4qfAwuzBRS4J_SA6p1I-UYnvqSuZxdvXV1E6HuGEMGOxWPeORsQ==
</PRE>
<ADDRESS>
</ADDRESS>
</BODY></HTML>You have new mail in /var/spool/mail/ec2-user

[root@ip-10-1-36-192 ec2-user]# curl -Ik https://website.com
HTTP/1.1 200 OK
Cache-Control: no-cache, must-revalidate
Content-Language: en
Content-Type: text/html; charset=utf-8
Date: Fri, 24 Feb 2017 05:50:46 GMT
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Server: Apache/2.4.25 (Amazon) OpenSSL/1.0.1k-fips mod_fcgid/2.3.9
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Generator: Drupal 7 (http://drupal.org)
X-UA-Compatible: IE=edge,chrome=1
Connection: keep-alive

整个 sie 都被 CDN 搞疯了,这就是我所看到的

enter image description here

如果我禁用 CDN 模块,从网站的外观和感觉来看一切都很好。

【问题讨论】:

  • 您在这里至少有两个问题。第一个问题的答案——如所写——应该通过搜索 Google 或 Stack Overflow 很明显,所以我想知道你是否真的遇到了一个你没有提到静态+动态的问题,而是询问它是否是“可能的”。关于证书的第二个问题需要详细说明。 CloudFront在源上支持此功能,仅在分配上支持。
  • @Michael-sqlbot 查看我更新的帖子
  • 不要将-k 与 curl 一起使用。这是--insecure 的别名,它会忽略无效或不受信任的 SSL 配置。显然,如果您必须使用该选项,则意味着您的 SSL 配置无效,而 502 错误正是 CloudFront 在这种情况下预期会执行的操作。 CloudFront 不允许到源的不安全连接。我在this answer on Server Fault 中解决了一个可能类似的错误配置。
  • 哦... “将自签名证书添加到 chrome 和我的系统” 您不能在源上使用自签名证书。 CloudFront 必须能够验证源的身份,而这对于自签名证书是不可能的。
  • 感谢@Michael-sqlbot。我从 Comodo 提供了一个免费的 SSL 证书,现在我可以看到我的图像、js 和 css 来自 CloudFront。一个问题,对我来说使用 CDN 的整个想法是提高我的网站的加载速度。当我在 Google PageSpeed Insight 中看到时,它并没有太大变化。能猜出是什么原因吗?

标签: amazon-web-services amazon-cloudfront


【解决方案1】:

是否可以同时提供静态和动态内容 CloudFront?

是的,CloudFront 也提供动态内容。这可以是 PHP 内容等。 您的源可以是 S3 或 Web 服务器(aws 实例)等。请阅读 CloudFront 文档以了解有关其工作原理的详细信息。

是的,CloudFront 支持自签名证书。您可以详细说明您为设置它所采取的步骤。或者,请在此处查看文档:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-requirements.html

【讨论】:

    【解决方案2】:

    问题出在自签名证书上。我从 Comodo 提供了一个免费的 SSL,并且能够对其进行配置。瞧! CloudFront 能够识别它,并从中提供我的内容。 Google Pagespeed Index 也从 74 跃升至 85。

    感谢@Michael - sqlbot 向我阐明了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多