2009-06-04 7 views

답변

0

아니요. 이를 통해 EC2 인스턴스와 프록시를 실행할 수 있습니다.

+1

hhhhhh. 아니. 그것은 CDN의 목적을 이깁니다. – FlavorScape

3

Apache RewriteMap을 사용하여 관련 링크를 * .jpg, * .gif, * swf, * .fla를 Cloudfront에 대한 파일 확장명을 다시 매핑하도록 다시 매핑합니다. 기본적으로 귀하의 이미지에 대한 URL을 사이트에 대한 상대 링크로 표시합니다. S3/cloudfront URL의 발견을 완전히 막지는 않지만, 도둑이되는 데 어려움을 겪을 수 있습니다.

위의 방법을 사용하여 핫 링크 제한을 htaccess를 통해 적용 할 수 있습니다. 나는 그것을 직접 시도하지 않았다.

+0

어? CloudFront 서버로 이동하기 전에 모든 이미지 요청이 서버로 전송되어야한다는 의미는 아닙니다. 그렇다면 CDN 사용의 이점을 무력화하지 않습니까? (비디오와 같은 큰 파일은 아니지만 이미지와 같은 파일 일까?) –

+0

요청이 웹 서버에 도착하고 브라우저가 파일을 가져와야하는 위치를 알려주지 만 브라우저의 기록은 실제 URL로 업데이트되지 않습니다 CDN에. 이것은 대부분의 프론트 엔드 컨트롤러 프레임 워크에서 "라우트"뒤에있는 본질적으로 같은 트릭이지만,이 경우 요청은 애플리케이션 서버로 전달되지 않고 오직 아파치에만 전달됩니다. – Claude

+0

@Claude 브라우저 대신 다운로드 관리자를 사용하거나 curl/wget과 같은 것을 사용하는 경우 리디렉션이 투명하지 않으므로 핫 링크 기능을 사용할 수 있습니까? – icarus74

1

좋은 자습서 here이 있습니다. 솔루션을 작동시키지 않는 공백 문자가 웹 사이트 코드에 있으므로 주석을 확인하십시오.

0

핫 링크 아마존 CloudFront를 만든 이유 중 하나입니다. Cloudfront는 훨씬 더 빠릅니다. 나는 당신이 여기에서 볼 수있는 글을 썼다.

http://blog.sat.iit.edu/2011/12/amazon-aws-s3-vs-cloudwatch-performance-grudgematch/

편집 : S3와 CloudFront를 둘 다 확인 요청이 올바른 URL에서 제공하기 위해 버킷 정책의 동일한 유형을 사용합니다. Cloudfront는 여전히 더 빠릅니다.

+1

Cloudfront가 핫 링크를 방지하지 않거나 S3 정책을 준수하지 않습니다. –

15

도메인의 리퍼러를 허용하고 도메인이 아닌 리퍼러를 거부하는 버킷 정책이 필요합니다. 나는 명시적인 거부를 포함하지 않으면 이미지가 핫 링크 될 수 있음을 발견했습니다. 많은 가이드와 예제는 허용 정책을 제공하고 거부 부분은 언급하지 않습니다.

여기에 그냥 자신의 세부 사항에 BUCKET-이름과-웹 사이트를 변경, 내 정책의 :

{ 
    "Version": "2008-10-17", 
    "Id": "", 
    "Statement": [ 
    { 
     "Sid": "Allow in my domains", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::BUCKET-NAME/*", 
     "Condition": { 
     "StringLike": { 
      "aws:Referer": [ 
      "http://www.YOUR-WEBSITE.com/*" 
      ] 
     } 
     } 
    }, 
    { 
     "Sid": "Deny access if referer is not my sites", 
     "Effect": "Deny", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::BUCKET-NAME/*", 
     "Condition": { 
     "StringNotLike": { 
      "aws:Referer": [ 
      "http://www.YOUR-WEBSITE.com/*" 
      ] 
     } 
     } 
    } 
    ] 
} 
+0

감사합니다. 이것은 정말로 나를 도왔고 잘 작동했습니다. 내 유일한 제안은 어쩌면 당신은 또한 단지 "http://YOUR-WEBSITE.com/*"에 대한 항목을 추가하여 모든 문제를 해결할 수 있습니다. 그래도 완벽한 스크립트를위한 건배. – Cheeky

+0

위대한 작품이지만 빈 참조자를 허용하려면 어떻게해야합니까? CSS를 통해 이미지에 링크 할 때 리퍼러는 비어 있고 이미지는 표시되지 않습니다. – prophoto

+0

완벽! 넌 나를 구했다 – Ricardo

1

그것은 당신의 버킷 이름에 자신의 official docs

변경 examplebucket에, 그리고 도메인에 example.com.

"Version":"2012-10-17", 
"Id":"http referer policy example", 
"Statement":[ 
    { 
    "Sid":"Allow get requests originating from www.example.com and example.com.", 
    "Effect":"Allow", 
    "Principal":"*", 
    "Action":"s3:GetObject", 
    "Resource":"arn:aws:s3:::examplebucket/*", 
    "Condition":{ 
     "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} 
    } 
    } 
] 
}