본문으로 건너뛰기
Kabkee.github.io
뒤로 가기

Azure App Service 시간대(Timezone) 바꾸기: Linux는 TZ, Windows는 WEBSITE_TIME_ZONE

2020년 2월 작성. 2026년 기준으로 정리하면 다음과 같다.

  • Windows App Service: 앱 설정 WEBSITE_TIME_ZONE 에 Windows 시간대 이름을 넣는다. 예: Korea Standard Time
  • Linux App Service: 앱 설정 TZ 에 TZ database 이름을 넣는다. 예: Asia/Seoul. 지금은 Linux에서도 WEBSITE_TIME_ZONE 에 Asia/Seoul 을 넣으면 동작한다고 안내된다(참고).
  • 앱 설정을 바꾸면 앱이 다시 시작된다.
  • 서버 시간대에 기대지 않고, node-cron의 timezone 옵션으로 코드에서 시간대를 지정하는 방법이 더 안전하다(아래 «코드에서 시간대 지정하기» 참고).

목차

목차 펼치기

시간대를 바꿔야 했던 이유

Node.js에서 node-cron으로 정해진 시각마다 함수를 실행하고 있었는데, 설정한 시각에 실행되지 않았다.

처음에는 node-cron이 동작하지 않는 줄 알았다. 그런데 원인은 Node가 돌고 있는 서버의 시간대였다. Azure App Service의 기본 시간대는 UTC라서, 한국 시간으로 예약한 작업이 9시간 어긋나게 실행되고 있었다.

서버의 시간대를 바꿔야 했다.

WEBSITE_TIME_ZONE 설정이 적용되지 않았다

처음 찾은 글은 CHANGING THE TIMEZONE ON YOUR AZURE WEBAPP / APP SERVICE / FUNCTION이었다. 설명이 잘 되어 있어서 그대로 따라 했지만 서버 시간은 바뀌지 않았다.

대부분의 글이 App Service의 구성(Configuration) 화면에서 WEBSITE_TIME_ZONE 값을 추가하면 된다고 설명한다. 하지만 내 환경(Linux)에서는 제대로 동작하지 않았다.

지역 이름은 바뀐 것처럼 보이지만, 시간은 여전히 UTC로 표시됐다.

같은 문제를 겪은 사람들

나만 겪은 문제는 아니었다. Stack Overflow 질문에도 시간대 설정 이야기가 있었지만, 거기 나온 방법도 내 환경에서는 동작하지 않았다.

결론: Linux에서는 TZ

Linux 환경이라면 앱 설정에 TZ 를 추가하면 된다.

이름값
TZAsia/Seoul

Azure 전용 설정인 WEBSITE_TIME_ZONE 이 더 그럴듯해 보였지만, 결국 답은 TZ 였다. App Service의 OS가 Windows 계열인지 Linux 계열인지에 따라 써야 하는 설정 이름과 값의 형식이 다르다.

OS앱 설정값의 예값 목록
WindowsWEBSITE_TIME_ZONEKorea Standard TimeWindows 기본 시간대 목록
LinuxTZAsia/SeoulTZ database 목록

설정한 뒤에는 Kudu나 SSH 콘솔에서 date 명령으로 서버 시간이 바뀌었는지 확인할 수 있다.

코드에서 시간대 지정하기

서버 시간대를 바꾸지 않아도, node-cron의 timezone 옵션으로 작업마다 시간대를 정할 수 있다. 서버 설정이 바뀌어도 영향을 받지 않아서 이쪽이 더 안전하다.

const cron = require("node-cron");

// 매일 한국 시간 오전 9시에 실행
cron.schedule("0 9 * * *", runTask, { timezone: "Asia/Seoul" });

참고자료


이 글 공유하기:

이전 글
Vue로 오목 게임 만들기: 렌주룰 금수 옵션과 기능 정리
다음 글
Axios withCredentials를 위한 PHP CORS 설정 (Preflight·다중 Origin)