본문 바로가기

취미/컴퓨터

HTTPD 운영시 사용되는 모듈 및 소개 (with NGINX)

nginx 를 부를 때마다 생각나는 디지털 엑스

 

1. mpm_event_module

역할: 멀티프로세싱 모듈 (MPM)

설명: 이벤트 기반의 비동기 처리를 제공하여 고성능을 구현합니다. 주로 Keep-Alive 연결을 효율적으로 관리하며, 더 많은 동시 연결을 처리할 수 있도록 설계되었습니다.
예시:

<IfModule mpm\_event\_module>  
StartServers 2  
MinSpareThreads 25  
MaxSpareThreads 75  
ThreadLimit 64  
ThreadsPerChild 25  
MaxRequestWorkers 150  
MaxConnectionsPerChild 0

2. authn_file_module

역할: 파일 기반 인증

설명: 사용자 이름과 비밀번호를 파일에 저장하고, 이를 기반으로 사용자를 인증합니다. 주로 .htpasswd 파일을 사용하여 사용자 정보를 관리합니다.
예시:

<Directory "/var/www/html/protected">  
AuthType Basic  
AuthName "Restricted Area"  
AuthUserFile /etc/apache2/.htpasswd  
Require valid-user

3. authn_core_module

역할: 인증 핵심 모듈

설명: 인증 프레임워크를 제공하고, 다른 인증 모듈(authn_*)과 협력하여 사용자 인증을 처리합니다. 인증 모듈의 기본적인 동작을 정의합니다.
예시:

<Directory "/var/www/html/protected">  
AuthType Basic  
AuthName "Restricted Area"  
Require valid-user

4. authz_host_module

역할: 호스트 기반 접근 제어

설명: 클라이언트의 IP 주소나 호스트 이름을 기반으로 접근을 제어합니다. 특정 IP 또는 호스트에 대해 접근을 허용하거나 거부할 수 있습니다.
예시:

<Directory "/var/www/html/protected">  
    Order deny,allow  
    Deny from all  
    Allow from 192.168.1.0/24  
</Directory>

5. authz_groupfile_module

역할: 그룹 파일 기반 접근 제어

설명: 사용자 그룹 파일을 사용하여 접근을 제어합니다. 그룹 파일에 정의된 그룹에 속한 사용자의 접근을 허용하거나 거부할 수 있습니다.
예시:

<Directory "/var/www/html/protected">  
    AuthType Basic  
    AuthName "Restricted Area"  
    AuthUserFile /etc/apache2/.htpasswd  
    AuthGroupFile /etc/apache2/.htgroup  
    Require group admin  
</Directory>  

6. authz_user_module

역할: 사용자 기반 접근 제어

설명: 특정 사용자에 대해 접근을 제어합니다. 주로 Require user 지시어를 사용하여 특정 사용자의 접근을 허용합니다.
예시:

<Directory "/var/www/html/protected">  
    AuthType Basic  
    AuthName "Restricted Area"  
    AuthUserFile /etc/apache2/.htpasswd  
    Require user john  
</Directory>

7. authz_core_module

역할: 접근 제어 핵심 모듈

설명: 접근 제어 프레임워크를 제공하고, 다른 접근 제어 모듈(authz_*)과 협력하여 사용자 접근을 처리합니다. 접근 제어 모듈의 기본적인 동작을 정의합니다.
예시:

<Directory "/var/www/html/protected">  
    Require valid-user  
</Directory>  

8. access_compat_module

역할: 구버전 접근 제어 호환성

설명: Apache 2.2와의 호환성을 위해 이전 접근 제어 지시어(Order, Allow, Deny, Satisfy)를 지원합니다. 최신 버전의 지시어(Require 등)와 함께 사용될
수 있습니다.

<Directory "/var/www/html/protected">  
    Order allow,deny  
    Allow from all  
</Directory>  

9. auth_basic_module

역할: 기본 인증

설명: HTTP 기본 인증을 처리합니다. 클라이언트로부터 사용자 이름과 비밀번호를 수신하여 인증을 수행합니다.
예시:

<Directory "/var/www/html/protected">  
    AuthType Basic  
    AuthName "Restricted Area"  
    AuthUserFile /etc/apache2/.htpasswd  
    Require valid-user  
</Directory>  

10. reqtimeout_module

역할: 요청 시간 제한

설명: 요청의 각 단계에 대한 시간 제한을 설정합니다. 헤더와 본문 읽기에 대해 시간 제한을 두어, 서버 리소스를 보호하고 DoS 공격을 방지합니다.
예시:

<IfModule reqtimeout\_module>  
    RequestReadTimeout header=20-40,minrate=500 body=20,minrate=500  
</IfModule>  

11. filter_module

역할: 필터 프레임워크

설명: 필터 체인을 구성하고 관리하는 프레임워크를 제공합니다. 컨텐츠와 데이터를 필터링하거나 수정하는 모듈들이 필터 체인을 통해 데이터를 처리할 수 있도록 합니다.
예시:

# filter\_module 자체는 필터링 프레임워크를 제공하며, 다른 필터 모듈과 함께 사용됩니다.  
# 예를 들어, DEFLATE 필터를 사용하여 압축을 적용할 수 있습니다.  
<IfModule filter\_module>  
    AddOutputFilterByType DEFLATE text/html text/plain text/xml  
</IfModule>  

12. mime_module

역할: MIME 타입 설정

설명: 파일 확장자와 MIME 타입을 매핑하여, 각 파일에 적절한 MIME 타입을 설정합니다. 클라이언트가 파일의 종류를 올바르게 인식하도록 합니다.
예시:

<IfModule mime\_module>  
    TypesConfig /etc/mime.types  
    AddType application/x-compressed .Z  
    AddType application/x-gzip .gz .tgz  
</IfModule>  

13. log_config_module

역할: 로깅 설정

설명: 서버의 접근 로그와 에러 로그 형식을 설정하고 관리합니다. 다양한 형식으로 로그를 기록할 수 있습니다.
예시:

<IfModule log\_config\_module>  
    LogFormat "%h %l %u %t \\"%r\\" %>s %b" common  
    CustomLog logs/access\_log common  
</IfModule>  

14. env_module

역할: 환경 변수 설정

설명: 서버 환경 변수를 설정하고, 환경 변수를 기반으로 요청을 처리합니다. 특정 환경 변수에 따라 서버의 동작을 제어할 수 있습니다.
예시:

<IfModule env\_module>  
    SetEnvIf Request\_URI "\\.gif$" image-request  
    SetEnvIf Request\_URI "\\.jpg$" image-request  
    Header set Cache-Control "max-age=3600" env=image-request  
</IfModule>  

15. headers_module

역할: HTTP 헤더 관리

설명: HTTP 응답 헤더와 요청 헤더를 수정할 수 있는 기능을 제공합니다. 이를 통해 서버 응답에 커스텀 헤더를 추가하거나, 기존 헤더를 변경 및 제거할 수 있습니다.
예시:

<IfModule headers\_module>  
    Header set X-Custom-Header "MyHeaderValue"  
    Header always append X-Frame-Options SAMEORIGIN  
</IfModule>  

16. setenvif_module

역할: 환경 변수 설정

설명: 요청의 특성(예: 요청 URL, 사용자 에이전트, IP 주소 등)에 따라 환경 변수를 설정할 수 있습니다. 설정된 환경 변수는 다른 모듈이나 지시어에서 조건부 처리를 할 때 사용됩니다.
예시:

<IfModule setenvif\_module>  
    SetEnvIf Request\_URI "\\.gif$" image-request  
    SetEnvIf Request\_URI "\\.jpg$" image-request  
</IfModule>  

17. version_module

역할: 서버 버전 정보 표시

설명: 서버의 버전 정보를 HTTP 응답 헤더에 추가하거나, 서버의 상태 페이지에 버전 정보를 표시합니다.
예시:

<IfModule version\_module>  
    ServerTokens Full  
</IfModule>  

18. ssl_module

역할: SSL/TLS 지원

설명: HTTPS를 통해 보안 연결을 제공하기 위한 SSL/TLS 프로토콜을 지원합니다. 인증서와 암호화 설정을 관리합니다.
예시:

<IfModule ssl\_module>  
    SSLEngine on  
    SSLCertificateFile "/path/to/cert.pem"  
    SSLCertificateKeyFile "/path/to/key.pem"  
</IfModule>  

19. unixd_module

역할: Unix 특화 기능 지원

설명: 유닉스 기반 시스템에서 Apache HTTP Server의 실행 환경을 제어합니다. 사용자 및 그룹 권한 설정을 관리합니다.
예시:

<IfModule unixd\_module>  
    User www-data  
    Group www-data  
</IfModule>  

20. status_module

역할: 서버 상태 정보 제공

설명: 서버의 현재 상태와 성능 관련 정보를 제공하는 상태 페이지를 생성합니다. 주로 서버 모니터링에 사용됩니다.
예시:

<IfModule status\_module>  
    <Location /server-status>  
        SetHandler server-status  
        Require host example.com  
    </Location>  
</IfModule>  

21. autoindex_module

역할: 디렉토리 인덱싱

설명: 디렉토리 인덱싱을 제공하여, 인덱스 파일이 없는 디렉토리의 콘텐츠 목록을 자동으로 생성합니다.
예시:

<IfModule autoindex\_module>  
    Options +Indexes  
    IndexOptions FancyIndexing  
</IfModule>  

22. mpm_prefork_module

역할: 멀티프로세싱 모듈 (Prefork)

설명: 멀티스레드 환경 대신 멀티프로세스를 사용하여 요청을 처리합니다. 각 요청은 별도의 프로세스로 처리되므로, 안정성이 높습니다.
예시:

<IfModule mpm\_prefork\_module>  
    StartServers             5  
    MinSpareServers          5  
    MaxSpareServers         10  
    MaxRequestWorkers      150  
    MaxConnectionsPerChild   0  
</IfModule>

23. dir_module

역할: 디렉토리 인덱스 파일 설정

설명: 디렉토리 접근 시 기본적으로 로드할 파일(예: index.html, index.php)을 지정합니다.
예시:

<IfModule dir\_module>  
    DirectoryIndex index.html index.php  
</IfModule>  

24. alias_module

역할: URL 경로 매핑

설명: URL 경로를 파일 시스템의 특정 디렉토리로 매핑합니다. 이를 통해 특정 URL 요청을 다른 디렉토리나 파일로 리디렉션할 수 있습니다.
예시:

<IfModule alias\_module>  
    Alias /images/ "/path/to/images/"  
    <Directory "/path/to/images">  
        Options Indexes FollowSymLinks  
        AllowOverride None  
        Require all granted  
    </Directory>  
</IfModule>  

이 모듈들은 Apache HTTP Server의 기능을 확장하고, 서버의 동작을 제어하는 데 중요한 역할을 합니다. 각 모듈은 특정한 기능을 담당하여 서버의 유연성과 기능성을 높입니다.

반응형