Google App Engine 표준 환경에서 HTML 파일, CSS, 이미지 같은 정적 콘텐츠를 안전하게 제공하는 방법을 알아봅니다.
시작하기 전에
웹사이트에 커스텀 도메인 이름을 사용하는 경우 안내에 따라 프로젝트에 커스텀 도메인을 추가합니다.
웹페이지 제공
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 양식을 통해 사용자 데이터 처리를 참조하세요.