NGINX ngx_http_random_index_module 모듈로 랜덤 페이지 반환
NGINX 는 웹 서버로서의 역할뿐만 아니라, 다양한 모듈을 통해 확장된 기능을 제공합니다. 그중에서도 ngx_http_random_index_module 모듈은 요청이 들어올 때마다 디렉토리 내의 파일 중 무작위로 하나를 반환하는 기능을 제공합니다.
이를 통해 랜덤하게 페이지를 표시해야 하는 상황에서 효과적으로 활용할 수 있습니다. 본 포스트에서는 ngx_http_random_index_module 모듈의 설정 방법과 활용 사례를 중심으로 설명하겠습니다.
목차
1. NGINX ngx_http_random_index_module 소개
1-1. 모듈의 기본 개념
1-2. ngx_http_random_index_module 모듈 활성화
2. NGINX ngx_http_random_index_module 설정
2-1. NGINX 설정 예시
2-2. 설정 옵션 설명
3. ngx_http_random_index_module 모듈을 통한 랜덤 페이지 반환
4. 결론 및 요약
1. NGINX ngx_http_random_index_module 소개
이 목차에서는 ngx_http_random_index_module의 기본 개념에 대해 설명합니다. 모듈의 주요 기능과 역할을 이해함으로써 NGINX 서버에서 이 모듈을 어떻게 활용할 수 있는지 파악하게 될 것입니다.
1-1. 모듈의 기본 개념
ngx_http_random_index_module 모듈은 NGINX에서 디렉토리 내에 있는 파일을 무작위로 선택하여 클라이언트에게 반환하는 기능을 제공합니다.
예를 들어 /usr/share/nginx/random-files/디렉토리 내에 아래와 같은 파일들이 있다면, 이들 중 랜덤한 파일을 클라이언트에게 반환하게 됩니다.
$ pwd
/usr/share/nginx/random-files
$ ls -l
-rw-r--r-- 1 root root 276 10월 7 17:19 index.html
-rw-r--r-- 1 root root 279 10월 7 17:19 index2.html
-rw-r--r-- 1 root root 277 10월 7 17:19 index3.html
일반적으로 웹 서버는 디렉토리 인덱스를 정적 목록으로 표시하지만, 이 모듈을 사용하면 요청이 들어올 때마다 해당 디렉토리 내의 파일 중 하나를 무작위로 반환함으로써, 사용자가 매번 다른 콘텐츠를 확인할 수 있도록 합니다.
이러한 방식은 랜덤한 콘텐츠 제공, 이미지 또는 동영상 파일의 무작위 배포와 같은 특정 상황에서 유용하게 활용될 수 있습니다.
1-2. ngx_http_random_index_module 모듈 활성화
ngx_http_random_index_module 모듈을 활성화하려면 NGINX가 해당 모듈을 지원하도록 컴파일하거나 이미 모듈이 포함된 버전을 설치해야 합니다. 은 기본적으로 NGINX에 포함되어 있지만, 설치된 버전에 따라 다를 수 있으므로 확인하는 것이 중요합니다.ngx_http_random_index_module
nginx -V 2>&1 | grep --color -o 'http_random_index_module'
위 명령어를 실행했을 때 출력 결과에 http_random_index_module 이 나타나면 모듈이 포함되어 있는 것입니다.
2. NGINX ngx_http_random_index_module 설정
2-1. NGINX 설정 예시
NGINX가 이미 설치되어 있고 해당 모듈이 포함된 경우, 설정 파일에 모듈을 활성화하는 구성을 추가하면 됩니다. 예를 들어, /etc/nginx/nginx.conf 또는 /etc/nginx/conf.d/default.conf 파일에 아래와 같은 구성을 추가합니다.
NGINX STORE GitHub: http-random-index.conf
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/random-files/;
random_index on;
}
}
2-2. 설정 옵션 설명
Syntax: random_index on | off;
Default:
random_index off;
Context: location
ngx_http_random_index_module 모듈은 디렉토리 내에서 임의의 파일을 선택하여 인덱스 파일로 제공합니다. 이 모듈은 ngx_http_index_module 모듈보다 먼저 처리됩니다.
3. ngx_http_random_index_module 모듈을 통한 랜덤 페이지 반환
2-1. 기본 설정 예시 목차와 동일한 구성이며, /usr/share/nginx/random-files/ 디렉토리에 하기와 같은 HTML 파일이 있다고 가정합니다.
$ pwd && ls -l
/usr/share/nginx/random-files
-rw-r--r-- 1 root root 278 10월 21 13:36 index.html
-rw-r--r-- 1 root root 281 10월 21 13:36 index2.html
-rw-r--r-- 1 root root 279 10월 21 13:36 index3.html
각 파일의 내용은 다음과 같습니다.
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
background-color: red;}
</style>
</head>
<body>
<h1>Random Page 1</h1>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
background-color: yellow;}
</style>
</head>
<body>
<h1>Random Page 2</h1>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
background-color: blue;}
</style>
</head>
<body>
<h1>Random Page 3</h1>
</body>
</html>
NGINX 웹 서버로 요청을 할 시, 요청마다 다른 정적 파일이 클라이언트에게 반환되는 것을 확인할 수 있습니다.



$ curl example.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
background-color: blue;}
</style>
</head>
<body>
<h1>Random Page 3</h1>
</body>
</html>
$ curl example.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
background-color: red;}
</style>
</head>
<body>
<h1>Random Page 1</h1>
</body>
</html>
$ curl example.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
background-color: blue;}
</style>
</head>
<body>
<h1>Random Page 3</h1>
</body>
</html>
4. 결론 및 요약
ngx_http_random_index_module 모듈은 NGINX에서 간단한 설정을 통해 디렉토리 내 파일을 무작위로 반환하는 기능을 제공하여, 랜덤한 콘텐츠 제공이 필요한 웹 서비스에 매우 유용합니다.
이 모듈을 활용하면 이미지 갤러리, 랜덤 인용구 페이지, 무작위 동영상 제공 등 다양한 웹 서비스에서 손쉽게 랜덤 페이지 반환 기능을 구현할 수 있습니다.
모듈을 통한 다양한 사용 사례를 알아보려면 NGINX STORE의 NGINX 카테고리를 참고하세요.