웹서버/Apache

[정보] httpd.conf 파일 설명

투칼론 2018. 12. 25. 23:16
반응형

아파치의 주요 설정 파일인 httpd.conf 파일은 다음과 같이 3가지 섹션으로 구성되어 있다.


Section 1: Global Environment


기본 설정

ServerRoot "/usr/local/apache"

: Apache의 최상위 디렉토리를 지정하며 절대경로로 지정한다. 이 디렉터리를 기준으로 다른 위치는 상대경로로 지정이 된다.

 ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard

: Apache의 런타임 상태가 ScoreBoardFile이 지정되어 있지 않으면 공유메모리(Shared Memory) 세스먼트에 저장된다.

 PidFile /usr/local/apache/logs/httpd.pid

: 기동 시에 프로세스 ID가 해당 파일에 저장된다.


타임아웃과 Keep-Alive 

 TimeOut  300

: 클라이언트가 서버에 요청을 한뒤 클라이언트에서 아무런 응답이 없어서 오류로 처리하기까지의 대기 시간

 KeepAlive  On

: HTTP 프로토콜은 호출 후에 바로 연결을 종료하는 비연결모드(Connection-less)이다. KeepAlive를 On으로 설정하면 일정시간(KeepAliveTimeout) 또는 일정횟수(MaxKeepAliveRequests) 동안 해당 세션을 유지하여, 동일한 클라이언트로 부터 재호출이 들어오면 해당 소켓을 재사용한다. 이는 보통 20~30% 정도의 성능 향상을 가져오지만, 소켓을 일정시간 유지하기 때문에 자원은 더 사용된다.

 KeepAliveTimeout 15

: KeepAlive 모드에서 해당 소켓을 유지하기 위하여 동일한 클라이언트로부터 다음 요청까지 시간. 15초 동안 호출이 없으면 해당 소켓을 종료한다.

 MaxKeepAliveReques 100

: KeepAlive 모드에서 해당 연결을 통해 클라이언트로부터 최대로 요청받을 수 있는 횟수이다. 해당 연결을 통해 100번의 요청을 받았다면, 해당 소켓을 종료한다.


prefork 방식 설정

Apache는 컴파일 시에  prefork(프로세스 방식)과 worker(스레드방식, MPM) 방식을 지정할 수 있다. 최근에는 성능과 자원사용율 측면에서 강점이 있는 worker 방식을 주로 사용한다.

<IfModule prefork.c>

 StrtServers  8

: 기동 시에 미리 fork하여 생성한 자식 프로세스 수

 ServerLimit  256

: 접속 사용자수가 많아질 때, 최대 생성할 수 있는 자식 프로세스 수

 MinSpareServers  5

: 프로세스 생성 오버헤드를 줄이기 위해 여분으로 생성하여 대기하는 최소 프로세스 수

 MaxSpareServers  20

: 프로세스 생성 오버헤드를 줄이기 위해 여분으로 생성하여 대기하는 최대 프로세스 수

 MaxRequestsPerChild  1024

: 자식 프로세스(httpd) 당 최대 처리하는 요청 수. 해당 요청 수를 처리한 후 자동으로 프로세스는 종료된다. 이 값이 0일 때에는 요청 수에 제한이 없다. 

</IfModule>


worker(MPM) 방식 설정

최근에는 worker(MPM) 방식을 주로 사용한다.

<IfModule worker.c>

 StartServers         4

: 시작시에 초기화되는 서버 프로세스 갯수

 ServerLimit  256

: 접속 사용자수가 많아질 때, 최대 생성할 수 있는 자식 프로세스 수

 MaxClients         300

: 동시 연결 가능한 클라이언트의 최대 개수

 MinSpareThreads     25

: 프로세스당 스레드 생성 오버헤드를 줄이기 위해 여분으로 생성하여 대기하는 최소 스레드 수

 MaxSpareThreads     75

: 프로세스당 스레드 생성 오버헤드를 줄이기 위해 여분으로 생성하여 대기하는 최대 스레드 수

 ThreadsPerChild     25

: 프로세스당 스레드 수

 MaxRequestsPerChild  1024

: 자식 프로세스(httpd) 당 최대 처리하는 요청 수. 해당 요청 수를 처리한 후 자동으로 프로세스는 종료된다. 이 값이 0일 때에는 요청 수에 제한이 없다. 

</IfModule>



Section 2: 'Main' server configuration


포트, 계정/그룹

 Port         80

: Listen 포트 번호. 포트번호 1024 이하는 root 권한에서 기동해야 한다. 

 User        nobody

 Group       nobody

: 자식 프로세스가 기동될 Owner, Group. 보안때문에 별도 Shell이 설정되지 않은 nobody 계정으로 설정한다.

 ServerAdmin  me@mail.co.kr

: 관리자 메일 주소. 예를들어, Apache의 기본 오류 페이지가 디스플레이될 때, 관리자 이메일 주소로 사용된다.

 ServerName     www.example.com:80

: 서버 도메인명 또는 호스트명


디렉터리 및 관련 옵션 설정

 DocumentRoot  "/usr/local/apache/htdocs"

: http 요청 시에 HTML, javascript 파일 기본 디렉터리

 

<Directory /usr/local/apache/htdocs>

   AllowOverride FileInfo AuthConfig Limit

   Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

</Directory>

: 해당 디렉터리에 대한 다양한 옵션을 설정한다.


<IfModule mod_dir.c>

  DirectoryIndex index.html index.htm

</IfModule>

: 디렉터리로 요청이 왔을때, 가장 먼저 찾아서 리턴할 파일이름을 순서대로 설정한다.


에러 로그 및 접근로그 설정

ErrorLog  /log/apache/errorlog/error_log

: Apache 에러 로그를 남기는 위치 및 파일을 설정한다.

 

LogLevel  warn

: log를 남기는 기준 레벨을 설정한다. 설정 레벨은 debug, notice, warn, error, crit, alert, emerg 등이 있다. debug가 가장 상세하게 log를 남긴다. 기본값은 warn이다.


CustomLog  /log/apache/accesslog/access_log common

: 접근로그를 남기는 위치 및 파일을 설정한다.



Section 3: Virtual Hosts


NameVirtualHost  192.10.12.xxx

: 192.10.12. 대의 IP에서 가상호스트 요청을 기다린다.


<VirtualHost  192.10.12.xxx>

: 192.10.12. 대의 IP에서 가상호스트 요청을 기다린다.

  ServerName  www.example.com

: www.example.com 도메인/서버명 요청을 기다린다.

  ServerAlias   www.example.org

: www.example.org 도메인/서버명 요청도 처리한다.

</VirtualHost>


참고로, 가상호스트는 다양하게 설정 가능하다.