Classic/VPC 환경에서 이용 가능합니다.
정적 웹사이트 호스팅을 통해 버킷의 객체를 웹사이트 콘텐츠로 제공할 수 있습니다. 네이버 클라우드 플랫폼 콘솔에서 정적 웹사이트 호스팅을 설정하고 관리하는 방법은 다음과 같습니다.
정적 웹사이트 호스팅 설정
정적 웹사이트 호스팅을 활성화하고 웹사이트 공개에 필요한 접근 권한을 설정하는 방법과 호스팅 동작 방식을 안내합니다.
정적 웹사이트 호스팅 활성화
버킷에 저장된 콘텐츠를 웹사이트로 제공하려면 정적 웹사이트 호스팅을 활성화해야 합니다. 웹사이트를 외부에 공개하려면 버킷 정책과 퍼블릭 액세스 차단 설정도 함께 확인해 주십시오.
- 버킷 목록에서 버킷을 선택한 후 정적 웹사이트 호스팅 영역의
를 클릭해 주십시오. - 정적 웹사이트 호스팅 설정 팝업 창에서 정적 웹사이트 호스팅 설정을 활성화합니다.
- 정적 웹사이트 호스팅 설정 팝업 창에서 호스팅 유형을 선택해 주십시오.
- 이 버킷에서 웹사이트 호스팅: 버킷에 저장된 객체를 웹사이트 콘텐츠로 제공합니다.
- 모든 요청 리다이렉션: 이 버킷의 웹사이트 요청을 다른 버킷 또는 도메인으로 리다이렉션합니다.
- 선택한 호스팅 유형에 따라 설정값을 작성해 주십시오.
- 이 버킷에서 웹사이트 호스팅을 선택한 경우
- 인덱스 파일: 웹사이트의 기본 페이지로 사용할 객체 이름 입력(<예시> index.html)
- 파일 이름에 슬래시(/) 포함 불가
- 오류 파일: 오류 발생 시 표시할 객체 이름 입력(<예시> error.html)
- 리다이렉션 규칙: 특정 경로나 HTTP 오류에 대한 요청을 다른 위치로 리다이렉션
- [수정] 버튼을 클릭한 후 리다이렉션 규칙 수정 팝업 창에서 JSON 형식으로 작성한 규칙을 입력하고 [확인] 버튼 클릭
- 인덱스 파일: 웹사이트의 기본 페이지로 사용할 객체 이름 입력(<예시> index.html)
- 모든 요청 리다이렉션을 선택한 경우
- 호스트 이름: 리다이렉션할 대상 버킷의 웹사이트 주소 또는 도메인 입력
- 공백 및 슬래시(/) 포함 불가
- 프로토콜: 리다이렉션 시 사용할 프로토콜 선택
- 호스트 이름: 리다이렉션할 대상 버킷의 웹사이트 주소 또는 도메인 입력
- 이 버킷에서 웹사이트 호스팅을 선택한 경우
- 정적 웹사이트 호스팅 팝업 창에서 작성된 내용을 확인한 후 [확인] 버튼을 클릭해 주십시오.
웹사이트 공개를 위한 접근 권한 설정
웹사이트를 외부에 공개하려면 버킷에 적절한 접근 권한을 설정해야 합니다. 웹사이트 공개를 위한 접근 권한 설정 순서는 다음과 같습니다.
- 퍼블릭 액세스 차단 해제: 퍼블릭 액세스 차단 설정에서
BlockPublicPolicy와RestrictPublicBuckets를 모두 해제해 주십시오. - 공개 버킷 정책 저장: 웹사이트에서 제공할 객체에 익명 사용자가 접근할 수 있도록 버킷 정책을 설정해 주십시오.
- 정적 웹사이트 호스팅 설정: 정적 웹사이트 호스팅을 활성화하고 인덱스 파일 등의 설정을 완료해 주십시오.
- 버킷 정책이 설정되지 않은 경우 객체의 존재 여부와 관계없이 모든 객체 접근 요청에
403 Forbidden오류가 반환됩니다. - 접근 권한이 없는 경로는 해당 객체가 존재하지 않더라도
403 Forbidden오류가 반환됩니다. 이는 접근 권한이 없는 사용자에게 객체의 존재 여부가 노출되지 않도록 하기 위한 동작입니다. - 퍼블릭 액세스 차단을 해제하는 것만으로 객체가 공개되지는 않습니다. 필요한 공개 버킷 정책을 별도로 설정해야 합니다.
인덱스 파일 및 오류 파일
웹사이트의 기본 페이지로 제공할 인덱스 파일과 오류 발생 시 표시할 오류 파일의 동작 방식은 다음과 같습니다.
인덱스 파일
인덱스 파일은 웹사이트의 기본 페이지로 제공할 객체입니다. 웹사이트의 루트 주소 또는 폴더 주소로 요청하면 해당 경로의 인덱스 파일을 찾아 응답합니다. 인덱스 파일을 index.html로 설정한 경우의 동작은 다음과 같습니다.
| 요청 주소 | 처리 결과 |
|---|---|
/ |
/index.html 반환 |
/images/ |
/images/index.html 반환 |
/images |
/images/로 302 리다이렉션 |
| 인덱스 파일이 없는 폴더 | 404 오류 반환 |
슬래시(/)가 없는 폴더 주소로 요청하면 슬래시가 포함된 주소로 리다이렉션한 후 해당 폴더의 인덱스 파일을 제공합니다. 단, 접근 권한이 없는 경로에는 404 Not Found 대신 403 Forbidden 오류가 반환될 수 있습니다.
오류 파일
오류 파일을 설정하면 웹사이트에서 4xx 오류가 발생했을 때 지정한 오류 페이지를 표시할 수 있습니다. 오류 파일을 설정하지 않은 경우에는 기본 오류 응답이 반환됩니다.
- 오류 파일은
403 Forbidden,404 Not Found등의 4xx 오류에만 적용됩니다. - 오류 파일을 표시하더라도 원래 발생한 HTTP 오류 상태 코드는 유지됩니다.
- 원래 발생한 오류에 대한 정보는
x-amz-error-*응답 헤더를 통해 확인할 수 있습니다. - 5xx 서버 오류에는 사용자 지정 오류 파일이 적용되지 않습니다.
리다이렉션 설정
정적 웹사이트 호스팅에서는 모든 요청을 다른 호스트로 리다이렉션하거나, 리다이렉션 규칙을 설정해 특정 조건의 요청만 리다이렉션할 수 있습니다.
모든 요청 리다이렉션
모든 요청 리다이렉션을 선택하면 버킷의 웹사이트 주소로 들어오는 모든 요청을 지정한 호스트로 리다이렉션합니다. 이 방식은 버킷에 저장된 객체를 조회하지 않고 리다이렉션하므로 객체에 대한 공개 접근 권한과 관계없이 동작합니다.
리다이렉션 규칙
이 버킷에서 웹사이트 호스팅을 선택한 경우 특정 경로나 HTTP 오류 조건에 따라 리다이렉션 규칙을 설정할 수 있습니다. 리다이렉션 처리 시 다음 사항을 참고해 주십시오.
- 리다이렉션 규칙은 객체 메타데이터에 설정된 리다이렉션보다 우선 적용됩니다.
- 조건에 해당하는 요청 주소에 실제 객체가 존재하는 경우에는 해당 객체를 반환할 수 있습니다.
- 리다이렉션 결과는 설정한 조건과 객체의 존재 여부에 따라 달라질 수 있습니다.
사용자 도메인 및 HTTPS 설정
정적 웹사이트 호스팅에서 제공하는 웹사이트 주소 대신 보유한 도메인을 사용하거나 HTTPS로 웹사이트를 제공하려면 CDN 서비스와 연동해야 합니다.
사용자 도메인 연결
사용자 도메인으로 웹사이트를 제공하려면 CDN의 원본(Origin)을 정적 웹사이트 호스팅 주소로 설정해 주십시오. 네이버 클라우드 플랫폼의 Global Edge를 사용하는 경우 다음과 같이 설정합니다.
- 정적 웹사이트 호스팅을 활성화하고 웹사이트 엔드포인트 주소를 확인해 주십시오.
- Global Edge에서 원본을 설정하고, 원본 주소에 정적 웹사이트 엔드포인트를 입력해 주십시오.
Forward Host Header를Origin Hostname으로 설정해 주십시오.- 사용자 도메인을 CDN에 연결하고 웹사이트에 정상적으로 접근할 수 있는지 확인해 주십시오.
CDN에서 원본으로 요청을 전달할 때는 반드시 원본 웹사이트 주소가 Host 헤더에 포함되도록 설정해야 합니다. Global Edge에서는 Forward Host Header를 Origin Hostname으로 설정해 주십시오. 다음 방식은 지원하지 않습니다.
- 사용자 도메인을 웹사이트 엔드포인트에 직접 CNAME으로 연결하는 방식
- Global Edge의
Incoming Host Header와 같이 방문자가 접속한 도메인을 원본으로 그대로 전달하는 방식
원본 요청의Host헤더에 Ncloud Storage 엔드포인트가 포함되지 않으면 요청이 웹사이트 호스팅이 아닌 경로 방식으로 처리될 수 있습니다. 이 경우 요청 경로의 앞부분을 버킷 이름으로 인식하여404 NoSuchBucket오류가 발생할 수 있습니다.
HTTPS 적용
정적 웹사이트 엔드포인트는 HTTP만 지원합니다. HTTPS로 접속하면 403 Forbidden 오류가 반환됩니다. HTTPS로 웹사이트를 제공하려면 Global Edge 등의 CDN 서비스를 연동하여 방문자와 CDN 사이의 HTTPS 연결을 처리해 주십시오.
이때 CDN과 Ncloud Storage 웹사이트 엔드포인트 사이의 원본 연결은 HTTP로 설정해야 합니다.
참고 사항
정적 웹사이트 호스팅을 사용할 때 참고해야 할 객체 처리 방식과 요청 처리 결과는 다음과 같습니다.
객체 삭제 및 버전 관리
버전 관리가 활성화된 버킷에서 버전을 지정하지 않고 삭제한 객체는 웹사이트 호스팅 요청 시 존재하지 않는 객체와 동일하게 처리됩니다.
- 삭제된 객체를 요청하면
404 Not Found오류가 반환됩니다. - 인덱스 파일 탐색, 폴더 주소 판정 및 리다이렉션 규칙에도 동일한 객체 존재 여부 판정이 적용됩니다.
단, 해당 경로에 대한 접근 권한이 없는 경우에는 403 Forbidden 오류가 반환될 수 있습니다.
HTTP 요청 처리
정적 웹사이트 호스팅은 다음 HTTP 요청을 지원합니다.
| 요청 | 처리 결과 |
|---|---|
Range |
지정한 범위의 콘텐츠를 반환하며 206 Partial Content 응답 |
| 유효하지 않은 요청 범위 | 416 Range Not Satisfiable 응답 |
If-Match |
조건이 일치하지 않으면 412 Precondition Failed 응답 |
If-None-Match |
조건에 따라 304 Not Modified 또는 412 Precondition Failed 응답 |
잘못된 웹사이트 주소 처리
웹사이트 주소가 올바르지 않은 경우 다음과 같이 처리됩니다.
| 요청 유형 | 처리 결과 |
|---|---|
| 버킷 이름이 없는 주소 | 301 리다이렉션 |
| 버킷 이름 규칙에 맞지 않는 주소 | 400 InvalidBucketName 또는 404 NoSuchBucket |
| 대문자가 포함된 주소 | 소문자로 변환하여 처리 |
CORS 및 액세스 로그
버킷에 CORS 규칙이 설정되어 있으면 정적 웹사이트 엔드포인트로 들어오는 Preflight 요청에도 해당 규칙이 적용됩니다. 버킷의 서버 액세스 로깅 기능을 사용하는 경우 정적 웹사이트 호스팅 요청은 WEBSITE.* 오퍼레이션으로 구분하여 기록됩니다.
정적 웹사이트 호스팅은 정적 콘텐츠를 제공하는 기능으로, 폴더 내 파일 목록을 자동으로 생성하거나 표시하는 기능은 제공하지 않습니다.