시작하기: 정적 콘텐츠 제공

Google App Engine 표준 환경에서 HTML 파일, CSS, 이미지 같은 정적 콘텐츠를 안전하게 제공하는 방법을 알아봅니다.

시작하기 전에

  1. 개발 환경을 구성하고 App Engine 프로젝트를 만듭니다.

  2. 웹사이트에 커스텀 도메인 이름을 사용하는 경우 안내에 따라 프로젝트에 커스텀 도메인을 추가합니다.

웹페이지 제공

App Engine은 HTML 페이지 같은 정적 콘텐츠와 이미지 같은 미디어를 제공할 수 있습니다. 정적 콘텐츠는 JSP 또는 서블릿으로 실행되지 않는 모든 콘텐츠입니다.

다음은 환영 메시지를 표시하는 기본적인 HTML 페이지의 예입니다.

<!DOCTYPE html>
<html>
  <head>
    <title>The App Engine Blog</title>
  </head>
  <body>
    <h1>Welcome to the App Engine Blog</h1>
    <p>This is being served by App Engine!</p>
  </body>
</html>

정적 파일을 저장할 위치

정적으로 제공하는 파일은 앱의 webapp 디렉터리에 저장해야 합니다. 폴더를 사용할 수 있지만 모든 파일 경로와 URI는 webapp 디렉터리를 기준으로 합니다.

정적 파일의 위치를 선택한 후 appengine-web.xml 파일에서 <static-files> 요소를 사용하여 위치를 정의해야 합니다.

아래 예시의 기본적인 appengine-web.xml 구성은 webapp 디렉터리의 모든 HTML 파일을 정적 파일로 취급합니다.

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <threadsafe>true</threadsafe>
  <runtime>java8</runtime>
  <static-files>
    <include path="/**.html" >
    </include>
  </static-files>
</appengine-web-app>

여러 <include path> 요소가 서로 다른 디렉터리와 서로 다른 파일 유형을 참조할 수 있습니다. 위의 예시를 아래와 같이 확장할 수 있습니다.

<static-files>
  <include path="/**.html" >
  </include>
  <include path="/images/**.jpg" >
  </include>
</static-files>

이제 webapp/images/ 디렉터리에서 .jpg 확장자를 갖는 모든 파일이 정적 파일로 취급됩니다.

위의 예시에서 webapp/images 디렉터리의 logo.jpg를 표시하고 싶다면 <img> 태그의 소스 URI는 <img src="/images/logo.jpg">와 같습니다.

모든 정적 콘텐츠에 HTTPS 적용

App Engine은 HTTP 또는 HTTPS를 통한 정적 콘텐츠 제공을 지원하지만 HTTPS를 사용하는 것이 좋습니다. 보안 URL을 설정하려면 프로젝트의 web.xml<security-constraint> 요소를 추가해야 합니다. 샘플 <security-constraint>는 다음과 같습니다.

<security-constraint>
    <web-resource-collection>
        <web-resource-name>blog</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>를 사용하면 모든 요청이 자동으로 정적 콘텐츠의 HTTPS URI로 리디렉션됩니다.

App Engine에 배포

Maven을 사용하여 앱을 App Engine에 배포할 수 있습니다.

프로젝트의 루트 디렉터리로 이동하여 다음을 입력합니다.

mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다. pom.xml 파일에 이미 프로젝트 ID가 지정된 경우 실행할 명령어에 -Dapp.deploy.projectId 속성을 포함하지 않아도 됩니다.

Maven이 앱을 배포한 후에 다음을 입력하여 새 앱에서 웹브라우저 탭을 자동으로 엽니다.

gcloud app browse

다음 단계

정적 파일을 사용하여 App Engine을 통해 이미지, CSS(Cascading Style Sheets), 정적 HTML 콘텐츠를 제공할 수 있습니다. 더 자세히 알아보려면 HTML 양식을 통해 사용자 데이터 처리를 참조하세요.