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가 해당 모듈을 지원하도록 컴파일하거나 이미 모듈이 포함된 버전을 설치해야 합니다. ngx_http_random_index_module 은 기본적으로 NGINX에 포함되어 있지만, 설치된 버전에 따라 다를 수 있으므로 확인하는 것이 중요합니다.

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

각 파일의 내용은 다음과 같습니다.

index.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>

index2.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>

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: blue;}
  </style>
 </head>
 <body>
  <h1>Random Page 3</h1>
 </body>
</html>

NGINX 웹 서버로 요청을 할 시, 요청마다 다른 정적 파일이 클라이언트에게 반환되는 것을 확인할 수 있습니다.

NGINX ngx_http_random_index_module 모듈로 랜덤 페이지 반환 - 1
NGINX ngx_http_random_index_module 모듈로 랜덤 페이지 반환 - 2
NGINX ngx_http_random_index_module 모듈로 랜덤 페이지 반환 - 3
$ 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 카테고리를 참고하세요.

NGINX STORE를 통한 솔루션 도입 및 기술지원 무료 상담 신청

* indicates required