-
Nginx HTTP/2 모듈 활성화 방법 및 장점LEPM/nginx 2025. 3. 16. 18:07
HTTP/2의 장점
- 이진 프로토콜 (Binary Protocol)
- 텍스트 기반인 HTTP/1.1과 달리 데이터를 이진 형식(0과 1)으로 전송하여 오류 발생 가능성을 줄이고 전송 효율성을 개선했습니다.
- 헤더 압축 (Header Compression)
- 응답 헤더를 압축하여 전송 시간을 단축합니다.
- 지속적·다중화 연결 (Persistent Multiplexed Connections)
- 단일 연결로 여러 리소스(HTML, CSS, JS, 이미지 등)를 동시에 전송 가능합니다.
- HTTP/1.1은 각 리소스마다 별도 연결이 필요했지만, HTTP/2는 연결 수를 크게 줄여 성능을 향상시킵니다.
- 서버 푸시 (Server Push)
- 클라이언트 요청 전에 서버가 필요한 리소스(스크립트, 스타일시트 등)를 미리 전송할 수 있습니다.
HTTP/1.1 vs HTTP/2 연결 방식 비교
- HTTP/1.1:
index.html, style.css, script.js를 로드하려면 3개의 별도 연결이 필요합니다. 브라우저의 동시 연결 제한으로 인해 지연이 발생할 수 있습니다. - HTTP/2:
단일 연결로 모든 리소스를 다중화 스트림을 통해 전송합니다. 연결 설정 오버헤드가 없어 효율적입니다.
Nginx에서 HTTP/2 활성화 방법
1. 필수 조건: SSL/TLS 설정
- HTTP/2는 HTTPS(SSL/TLS)가 필수입니다.
- 테스트용 자체 서명 인증서 생성 예시:
# SSL 디렉토리 생성 sudo mkdir /etc/nginx/ssl # 개인키와 인증서 생성 (테스트용) sudo openssl req -x509 -nodes -days 10 -newkey rsa:2048 \ -keyout /etc/nginx/ssl/self.key \ -out /etc/nginx/ssl/self.crt
2. Nginx 설정 파일 수정
- 기존 listen 80;을 **SSL 포트(443)**로 변경하고 http2 모듈을 추가합니다:
# HTTP(80포트) 요청을 HTTPS로 강제 전환 server { listen 80; server_name example.com; return 301 https://$host$request_uri; # 301 리다이렉트 } server { listen 443 ssl http2; # SSL + HTTP/2 활성화 server_name example.com; # SSL 인증서 경로 지정 ssl_certificate /etc/nginx/ssl/self.crt; ssl_certificate_key /etc/nginx/ssl/self.key; # 기타 설정 유지... }
3. Nginx 재시작 및 확인
- 설정 적용을 위해 Nginx 재시작:
sudo systemctl restart nginx
- 브라우저에서 https://도메인 접속 후 개발자 도구 > 네트워크 탭에서 Protocol 항목이 h2(HTTP/2)로 표시되는지 확인합니다.
주의사항
- 상용 환경에서는 Let's Encrypt 등의 신뢰된 인증서를 사용해야 합니다.
- 자체 서명 인증서는 브라우저에서 보안 경고를 표시하므로 테스트용으로만 사용합니다.
- HTTP/2를 지원하지 않는 클라이언트는 자동으로 HTTP/1.1로 폴백됩니다.
'LEPM > nginx' 카테고리의 다른 글
application/octet-stream (3) 2024.09.10 - 이진 프로토콜 (Binary Protocol)