2017-02-23 324 views
0

我们有一个基于Drupal7的电子商务网站,我试图在AWS中托管。我想知道,AWS CloudFront可以用来提供静态和动态内容吗?也许,创建两个来源或类似的东西?只是一个疯狂的猜测。 使用CDN的原因是为我们的js,css和图像服务。这些文件存储在EFS中。我没有去S3,因为我发现它很麻烦,而且我需要在Drupal上安装另一个S3FS模块并对其进行配置。总之,只是不想走那条路。此外,我的地区没有EFS,所以我不得不在爱尔兰主办该网站,因此需要CDN。 尽管如此,是否有可能为CloudFront提供静态和动态内容?AWS CloudFront可以同时提供动态和静态内容吗?

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

PS。我有Route53点的Cloudfront DNS

更新

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

  1. 新增的自签名的证书,以铬和我的系统,现在的我没有看到一个网页,说它是不安全的..所以一切都很好,直到这里。 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的当前状态是已启用和部署

  • 装入Route53 CloudFront的。出于某种原因,它没有被自动命名为A名称,我不得不强制输入云端DNS名称。

  • 安装Drupal的CDN模块

  • 模式被设置为 “原点拉”,CDN映射具有以HTTPS的Cloudfront URL

    现在开始该问题:

    [[email protected] 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 
    
    [[email protected] 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模块,从网站视角的外观和感觉都很好。

    +0

    这里至少有两个问题。第一个答案 - 就像书面的 - 应该从Google或Stack Overflow的搜索中显而易见,所以我想知道你是否真的有一个问题,你没有提到静态+动态,而是问是否它是“可能的”。有关证书的第二个问题需要详细说明。 CloudFront不会*仅支持分发上的原始内容。 –

    +0

    @ Michael-sqlbot结帐我更新的帖子 –

    +0

    请勿使用卷曲的“-k”。这是'--insecure'的别名,它会忽略无效或不可信的SSL配置。显然,如果您必须使用该选项,则表示您的SSL配置无效,并且502错误正是CloudFront在此情况下预期会执行的操作。 CloudFront不允许对源的不安全连接。我解决了[服务器故障上的这个答案](http://serverfault.com/a/779723/153161)中可能类似的错误配置。 –

    回答

    0

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

    谢谢@Michael -sqlbot为了澄清我的观点。

    1

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

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

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