(TIL) 2024-12-11
(TIL) 2024-12-11
Express Static 미들웨어
Express는 Node.js 환경에서 널리 사용되는 웹 애플리케이션 프레임워크로, 정적 파일(HTML, CSS, JavaScript, 이미지 등)을 제공하기 위한 내장 미들웨어인 express.static 함수를 제공한다. 클라이언트가 서버에 요청을 보낼 때, URL 경로와 express.static으로 설정한 디렉토리 경로를 매핑하여 해당 파일을 응답으로 제공한다. 만약 요청된 파일이 존재하지 않으면 404 상태 코드를 반환한다.
주요 역할
- 정적 파일 제공: 정적 파일이란 서버에서 별도의 처리 없이 클라이언트로 전달되는 파일을 의미한다.
- express.static 미들웨어를 사용하면 특정 디렉토리를 “정적 파일 제공 디렉토리”로 설정할 수 있다.
사용법
1
2
3
4
const express = require('express');
const app = express();
app.use(express.static('public'));
주요 매개변수
- root (필수)
- 정적 파일이 위치한 디렉토리의 경로를 지정합니다. 예: ‘public’, path.join(__dirname, ‘static’)
- options (선택):
- 정적 파일 제공 방식을 제어할 수 있는 다양한 설정을 담은 객체입니다.
- 자주 사용되는 옵션
dotfiles: 숨김 파일(.으로 시작하는 파일)의 접근 권한 설정 (‘allow’, ‘deny’, ‘ignore’).1
app.use(express.static('public', { dotfiles: 'deny' }));
etag: 파일의 ETag 생성 여부 설정 (캐싱에 사용됨).
extensions: 요청 URL에 확장자가 없을 경우 추가로 탐색할 확장자 목록.1
app.use(express.static('public', { extensions: ['html', 'htm'] }));
maxAge: 캐싱을 위한 Cache-Control 헤더에 설정할 밀리초 단위의 최대 시간.
1
app.use(express.static('public', { maxAge: '1d' })); // 1일 동안 캐싱
index: 디렉토리 요청 시 기본으로 제공할 파일 이름 설정.
주의할 점
- 보안: express.static으로 설정한 디렉토리 내의 모든 파일이 클라이언트에 노출될 수 있으므로 민감한 정보는 해당 디렉토리에 두지 않아야 한다
- 순서: app.use(express.static())는 다른 라우트 핸들러보다 먼저 호출해야 한다.
This post is licensed under CC BY 4.0 by the author.