티스토리 뷰
728x90
📖 OpenResty란?
OpenResty는
"Nginx를 기반으로 확장한 고성능 웹 플랫폼" 입니다.
- 기본은 Nginx입니다.
- 여기에 Lua 스크립트를 실행할 수 있는 환경을 추가해서
- 고성능 웹 서버 + 동적 애플리케이션 서버를 동시에 구현할 수 있게 만든 것입니다.
공식 사이트: https://openresty.org/
✨ 핵심 특징
기반 | Nginx (특히 nginx core + 모듈들) |
스크립트 | Lua (특히 LuaJIT 기반으로 고속 실행) |
목적 | API 서버, 웹 서버, 리버스 프록시, API Gateway, WAF 등 |
성능 | 수십만 동시 연결 처리 가능 (Nginx급) |
확장성 | Lua를 통해 복잡한 로직을 작성 가능 |
주요 모듈 포함 | ngx_lua, ngx_http_lua_module, redis, memcached, mysql, postgres 클라이언트 등 |
사용 예시 | Kong API Gateway, APISIX 등도 OpenResty 위에 구축됨 |
🛠 OpenResty 구성 요소
OpenResty는 단순한 웹서버가 아니라, 다음을 하나로 묶은 "플랫폼"입니다:
- Nginx Core (Stable 버전 기반)
- LuaJIT (고성능 Lua 엔진)
- ngx_lua module (Nginx 안에서 Lua 코드 실행)
- 다양한 공식/비공식 3rd-party Nginx 모듈
- Lua용 라이브러리 (Redis, MySQL, HTTP Client 등)
즉, Nginx + Lua + 필요한 확장 모듈 세트를 **"패키지"**로 묶은 것이라고 보면 됩니다.
🎯 OpenResty를 쓰는 대표적인 이유
- Nginx처럼 빠르고 안정적이면서
- API Gateway나 동적 라우팅을 직접 개발할 수 있음
- 복잡한 요청 처리(ex. JWT 인증, 요청 변조, 실시간 데이터 가공)를 Lua로 작성
- 백엔드 서버 없이 웹 서버에서 로직 처리 가능
- 비동기 네트워킹을 Lua로 쉽게 다룸 (ex. 비동기 Redis, 비동기 MySQL)
🔥 OpenResty vs Nginx
항목 | Nginx | OpenResty |
스크립트 처리 | 없음 (정적 설정파일) | Lua 스크립트로 동적 처리 가능 |
플러그인 개발 | C로 작성해야 함 | Lua로 간단히 작성 가능 |
용도 | 웹서버, 리버스프록시 | 웹서버 + 동적 API 서버 + 복잡한 비즈니스 로직 |
설치 복잡성 | 심플 | 다소 복잡 (OpenResty 패키지 설치 필요) |
📦 실제 활용 예시
- Kong, APISIX 같은 API Gateway 제품 → OpenResty 기반
- 자체 인증 서버 구축 (OAuth2 인증, JWT 발급)
- 실시간 요청 가공 서버 (HTTP Proxy + Lua 가공)
- WAF(웹 방화벽) 기능 추가
- 동적 로드밸런서 구현
- 캐시 서버 (Lua + Redis)
📝 간단 예시
OpenResty에서는 Nginx 설정 안에서 Lua 코드를 바로 넣을 수 있습니다.
location /hello {
content_by_lua_block {
ngx.say("Hello, OpenResty World!")
}
}
- location /hello 요청이 오면
- Lua 코드로 Hello, OpenResty World!를 출력하는 간단한 서버가 됩니다.
OpenResty 기본 구조도
728x90
'기타' 카테고리의 다른 글
OpenFaaS로 MongoDB REST Proxy 통해 MongoDB 조회하는 예시 (1) | 2025.04.14 |
---|---|
✅ Hook vs Trigger 차이 (0) | 2025.04.13 |
APISIX에서 HTTP 요청 흐름 가로채기 (0) | 2025.04.12 |
Kafka Connect 커스텀 SMT - JSON 데이터 외부 API POST 호출 + MongoDB Sink Connector (0) | 2025.04.12 |
Kafka Connect 기반 Base64 이미지 자동 저장 설계 (0) | 2025.04.11 |