httpd.conf 파일은 Apache Web Server 설정에 필요한 파일이다.

rpm 을 이용하여 설치하였다면 아래의 경로에 파일이 있으므로 참고하길 바란다.

* 설정파일 : /etc/httpd/conf/httpd.conf

 

지금부터 httpd.conf 파일을 해부해보자. 해당 파일은 크게 세가지 형태로 세분화할 수 있다.

* Global Environment : 아파치 웹서버 전반적인 설정

Main-Server configuration : 아파치 웹서버의 주 서버에 대한 설정

Virtual Hosts : 아파치 웹서버로 구동하는 가상 호스트에 대한 설정

 

 

### Global Environment ###

※  전반적인 설정에 대한 부분으로 아파치 웹서버에서 동작하는 모든 부분에 영향을 준다.

 

* ServerType : standalone

- 서버(데몬)의 구동방법으로는 "standalone"과 "inetd" 방식이 있는데,  standalone 방식으로 동작하도록 설정

 

* ServerTokens : OS

- 추가예정


* ServerRoot : "/etc/httpd"

- 아파치 웹서버의 설치 경로를 나타낸다. 단, 절대경로로 지정한다.

  아래쪽으로 설정하는 항목의 대부분 패스들은 이 경로에 대한 상대경로로 지정이 된다. 


* PidFile : run/httpd.pid

- ServerType이 Standalone 일 경우만 유효하다. 아파치 서버의 프로세스ID 가 기록될 파일을 지정,
ServerRoot 를 기준으로 상대경로로 지정도 가능하며, "/"로 시작하는 절대경로도 지정 가능
 


* Timeout : 60

- 클라이언트와 서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을 설정. (단위:초)
  네트웍의 속도가 나쁠수록 수치 값은 높게 설정하는 것이 좋다.

 

* KeepAlive : Off

- 접속한 채로 요청이 없어도 연결을 지속시킬 것인지 여부 설정. 허용하지 않는 것이 좋다.

 

* MaxKeepAliveRequests : 100

- 클라이언트가 접속된 시간동안 아파치서버에 요청할 수 있는 최대의 개수를 지정. '0'은 제한없음. 

 

* KeepAliveTimeout : 15

- 클라이언트가 접속을 유지한 상태로 아무 요청이 없을 경우 접속을 끊어줄 시간을 지정. (단위:초)

 

* Listen : 80
* Listen : 12.34.56.78:80

시스템의 기본값(local_IP, #80)이외에 다른 IP Address와 포트에 대해서도 연결할 수 있게 설정

- "httpd.conf" 파일 맨 뒤의 가상호스트(Virtual Host)를 설정하기 위해 필요

 

* Include : conf.d/*.conf

- httpd 가 동작될 때 참조할 설정파일의 위치를 정의한다.

- 현재 설정은 /etc/httpd/conf.d/ 경로안의 모든 conf 파일을 포함하여 실행되도록 설정되어 있으며

  가능한 변경하지 않도록 한다.

 

* ExtendedStatus : On

- "server-status" 로 아파치 웹 서버의 상태를 모니터링 할 때 "자세히 정보보기" 기능을

   제공할 것인지 설정(제공:on)

 

* User : apache
* Group : apache

아파치 웹 서버 데몬이 요청을 받았을 때 반환할 user와 group 을 설정
- Server Daemon 이 Standalone Type 방식으로 동작되고, 아파치의 실행이 root 권한으로 동작한 경우 유효하다.

 

 

### Main-Server configuration ###

아파치 웹서버의 주 서버가 사용할 값들을 지정한다.

<VirtualHost> 로 지정한 값이 아니면 모두 여기서 지정된 값이 기본값으로 적용된다.

 

* ServerAdmin : root@localhost

웹 페이지를 로딩시 에러가 출력될 경우 에러페이지내 출력될 관리자 정보(브라우저에 출력될 정보 입력)

- 대부분 해당 웹서버의 관리자 E-mail 주소를 입력하여 사용

 

* ServerName : localhost

클라이언트 브라우저의 주소창에 보여지는 호스트 이름을 지정

- 도메인도 가능하고 IP Address 도 가능하다.

- www를 쓰지않는 호스트에서 www를 쓰는 것처럼 보이게 할 수 있다.

  ex) test.net2free.net(DNS 주소) 을 www.net2free.net(web주소) 으로 지정해서 쓰는 것과 같다고 볼 수 있다.

 

* DocumentRoot : "/var/www/html"

아파치 웹 서버의 웹문서가 있는 기본 경로를 지정

- 디렉터리명을 지정하는 것이므로, 경로의 가장 마지막에 "/"를 입력하지 않도록 한다.

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>      
                

- Directory 에서 사용할 옵션들을 지정한 부분게 되며, 아래의 옵션들을 더 사용가능하다.

[ None, All, Indexes, Includes, FollowSymlinks, ExeCGI, MultiViews ]


* UserDir : public_html

하나의 웹 서버에서 여러 사용자들의 홈페이지를 각각 관리할 경우 사용자들의 홈페이지 디렉토리 경로를 지정

- ex) bluetails 란 사용자의 홈페이지를 "http://www.net2free.net/~bluetails" 라고 가정했을때 그 페이지의

        리눅스 경로는 "~bluetails/public_html/" 경로가 기본 경로로 사용되게 된다.

 

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch
IncludesNoExec
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
    <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY
MOVE LOCK UNLOCK>
        Order deny,allow
        Deny from all
    </Limit>
</Directory>

- 여러 사용자의 홈페이지 기본경로(public_html)의 권한 대한 옵션을 지정


* DirectoryIndex : index.html index.html.var

- 설정 파일내 여러 항목들 중 디렉터리만을 지정하여 사용하는 부분이 참조할 기본 출력 파일을 정의

- 다수를 지정하고 싶을때는 띄어쓰기로 구분하며 순서대로 탐색을 하게 된다.(index.html index.php index.htm 등)

  ex)- Browser -> http://www.net2free.net:9702

- Server 에서는 "DocumentRoot/DirectoryIndex" 형태로 출력시킬 파일을 찾아가게 된다.

 

* TypesConfig : /etc/mime.types

- 웹서버의 mime type을 설정한 파일을 지정

- mime.types 파일은 서버에 의해 리턴될 수 있는 파일명과 mime형식을 기술해 놓은 파일이다.

 

* DefaultType : text/plain

- mime.types 파일에 정의 되어있지 않은 파일 형식으로 요청을 받는 경우, 즉 알 수 없는 문서타입에

   대한 기본적인 응답 mime 타입을 지정


* HostnameLookups : Off

웹 서버의 로그(access_log)를 지정하는 Format 에서 "DNS Lookup"으로 지정하였을 때,

   domain 또는 IP Address로 남길 것인지 지정

- Default 설정은 IP Address로 남기게 되고, Domain 으로 설정(On)한 경우보다 속도가 조금 빠르다.

 

* ErrorLog : logs/error_log

- 아파치 웹서버의 에러로그 기록파일의 경로를 지정

<VirtualHost>부분에서 Log 관련 항목을 설정하지 않는 경우는 위 설정된 경로로 로그가 기록되게 된다.

 

* LogLevel : warn

- 로그를 기록할 때 그 파일내 기록할 내용의 중요도를 설정

중요도는 " debug → info → notice → warn → error → crit → alert → emerg " 가 존재

- 중요도가 낮으면 기록량이 많아지는 단점이 있으므로 서버의 역할에 잘 맞추어 설정하도록 한다.

 

* CustomLog : logs/access_log common

- 임의의 로그 포맷을 지정하여 로그파일에 기록하기 위해 설정

- 형식은 [경로(파일명까지 입력)] [선언명]

- 아파치 1.3.9 이상 버전은 CustomLog 를 <VirtualHost>에서도 사용할 수 있게 제공한다.

=> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

- 커스텀 로그로 사용될 형식을 지정하는 방법이다.

- 형식은 [ "기록형태" 선언명 ] 으로 지정

- 관리자는 원하는 정보를 지정해서 보기 위해 적당한 Format으로 여러개를 설정해두는 것을 추천한다.

 

* ServerSignature : On

- 서버가 생성하는 문서trailing footer line의 설정을 가능하게 한다.

- 문서의 형식은 "error documents", "FTP directory listings", "mod_status and mod_info output etc.",

  "but not CGI generated documents" 등이 있음.

 

* Alias : /icons/ "/usr/local/apache/icons/"

- 이벤트용 페이지나 관리자 전용 페이지를 만드는 등 필요한 경우에 별칭을 주도록 제공한 항목

- 형식은 [ 별명 "리눅스 경로" ] 로 작성한다.

- 단, Alias 의 경우는 파일과 디렉터리 모두 지정이 가능하므로 "/" 기호에 대한 부분은 주의가 필요하다.

 

* ScriptAlias : /cgi-bin/ "/usr/local/apache/cgi-bin/"

- ScriptAlias는 Alias 와 근본적으로 같은 내용으로 형식도 동일하다.

- ScriptAlias는 지정한 리눅스 경로 안에 있는 파일을 서버가 실행되도록 설정하기 때문에 디렉터리만 지정하도록 권장


* IndexOptions : FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8

- IndexOPtions는 웹 페이지상에서 디렉토리 목록을 출력할 때의 옵션을 지정

- Standard(볼품없는 기본 텍스트 형태), FancyIndexing(아이콘화 하여 아주 조금 더 예쁜 형태) 형식이 있다.

- 웹서버의 버전, 디렉터리명의 길이 무제한, HTML 형식의 테이블 출력, 문자인코딩(UTF-8) 형식으로 기본 지정됨.

 

- 아래의 내용은 IndexOptions 항목에서 "FancyIndexing" 의 경우 디렉토리 목록을 표시할 때

  출력시킬 아이콘 및 문구를 지정하는 항목이다.

=> AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

- 내용이 인코딩 타입인 경우 위처럼 나타낸다.

- 형식은 [ "AddIconByEncoding" / "(형식,출력 아이콘 경로)" / "형식" ]

    AddIconByType (TXT,/icons/text.gif) text/*

    ....

- 타입방식으로 선언시 위처럼 나타낸다.

- 형식은 [ "AddIconByType" / "(타입,출력 아이콘 경로)" / "형식" ]

     AddIcon /icons/binary.gif .bin .exe

    .... 

- 확장자 형태의 내용은 위처럼 나타낸다.

- 형식은 [ "AddIcon" / "출력 아이콘 경로" / "확장자" ]

=> DefaultIcon : /icons/unknown.gif

- "AddIcon..." 으로 지정한 항목이 아닌 경우 출력시킬 기본아이콘을 지정

=> AddDescription "GZIP compressed document" .gz
    ....

- AddDescription은 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을 표시할 때 사용.

형식은 [ "AddDescription" / "표시할 설명" / "확장자" ]

 

* ReadmeName : README.html

- 디렉토리 목록표시 가장 하단에 보여줄 설명파일의 이름을 지정.(꼬리말과 유사)

 

* HeaderName : HEADER.html

- 디렉토리 목록표시 가장 상단에 보여줄 설명파일의 이름을 지정.(머리말과 유사)

 

* IndexIgnore : .??* *~ *# HEADER* README* RCS CVS *,v *,t

- 디렉토리 목록을 인덱싱할 때 제외할 파일명을 지정. (디렉터리 목록에 제외될 대상)

쉘 환경의 와일드카드(*, ?)가 허용.

 

* LanguagePriority : en ca cs da de .....

- 언어의 우선순위를 내림차순으로 지정한다. (AddLanguage 의 형식 명칭 참조)

=> AddLanguage en .en
    .....

- AddLanguage 는 문서의 언어 형식을 지정.

- 형식은 [ "AddLanguage" / "형식명칭" / "확장자" ]

 

* Format: Action media/type /cgi-script/location

- Action 과 매칭되는 파일이 호출될때마다 스크립트를 실행시킬 수 있도록 설정

- 형식은 [ "Format: Action" / "매칭형식" / "연결스크립트" ]

 

* ErrorDocument

- 에러발생시 응답을 정의할 수 있는 방법을 정의한다. 3가지 기본 형태를 제공한다.

 

=> ErrorDocument 500 "The server made a boo boo.

- 일반적인 텍스트 형태로 출력

- 형식은 [ "ErrorDocument" / "에러코드번호" / "출력시킬 텍스트" ]

=> ErrorDocument 404 /missing.html

=> ErrorDocument 404 /cgi-bin/missing_handler.pl

- 또다른 페이지로의 연결 (지역적인 방향전환)

- 형식은 [ "ErrorDocument" / "에러코드번호" / "출력시킬 페이지 경로" ]

=> ErrorDocument 402 http://www.example.com/subscription_info.html

- 또다른 페이지로의 연결 (외부 방향전환)

- 형식은 [ "ErrorDocument" / "에러코드번호" / "외부로 출력시킬 페이지 경로" ]

 


### 가상호스트(VirtualHost) 설정 ###

하나의 Apche 웹서버에 여러개의 도메인이나 호스트네임을 설정하여 관리할 경우 설정.

 

Apche 웹서버 설정 파일내 "<VirtualHost> ~ </VirtualHost>" 부분에 정의하여 사용하고

가상호스트에서 설정한 내용은 주 서버 설정과는 별도로 인식되기 때문에 VirtualHost 부분에

설정한 내용이 적용받아 실행된다 볼 수 있다.

가상호스트에 대한 자세한 정보는 http://www.apache.org/docs/vhosts/ 를 참조하시기 바랍니다.

 

버추얼 호스팅에서는 두가지 방법이 존재한다.

ㄱ. 이름기반의 버추얼 호스팅

- 도메인을 사용하는 경우 하나의 도메인에 여러개의 호스트가 존재하는 형태로 출력되는 방법

- ex) www.net2free.net , blog.net2free.net -> 192.168.1.55

 

ㄴ. IP 기반의 버추얼 호스팅

- 하나의 웹서버가 두개의 아이피로 모두 연결이 가능하도록 설정하여 출력되는 방법

- ex) 192.168.1.55 , 192.168.1.150   -> www.net2free.net

 

위 2가지 방법 중 이름을 이용한 호스팅을 하기 위해서는 "NameVirtualHost" 가 정의 되어 있어야 가능하다.

또한 정의 IP 를 이용하여 선언하는 것을 추천한다.

 

* NameVirtualHost : *:80

* NameVirtualHost : 192.168.1.55

- 아래쪽에 선언하는 VirtaulHost 들의 name-base 역할을 할 서버를 지정.

- 형식은 [ "NameVirtualHost" / "IP:Port" ] 로 지정하고, 80번을 이용하는 경우는 Port 를 생략해도 무방.

 

* <VirtualHost www.net2free.net:80>

ServerAdmin webmaster@manualand.co.kr

DocumentRoot /home/sspark/public_html

ServerName www.manualand.co.kr

ErrorLog /home/sspark/public_html/aw/error_log

CustomLog /home/sspark/public_html/aw/access_log common

   </VirtualHost>

 

=> <VirtualHost ServerInfo:Port>

- ServerInfo 부분은 도메인 또는 IP 를 이용하여 설정하고, Port 부분은 자신이 원하는 0~65535 중 설정한다.

   (Port 는 방화벽 해제가 필수이다.)

- 현재 설정하는 VirtualHost 에만 적용되는 사항들로 설정하게 된다.

=> ServerAdmin

=> DocumemtRoot
=> ServerName
=> ErrorLog
=> CustomLog

- 근본적인 내용은 Main 설정 부분에서 안내한 내용과 동일하다.

</VirtualHost>

 

 

//////////////////////////////////// 기타 적용 가능 사항 /////////////////////////////////////////

 

* LockFile : logs/accept.lock

- 아파치 컴파일시 USE_FCNTL_SERIALIZED_ACCEPT나 USE_FLOCK_SERIALIZED_ACCEPT으로 컴파일 했을 때

  사용되는 LockFile의 경로지정시에 사용한다. 기본값으로 가능한 사용.


* ResourceConfig : conf/srm.conf
* AccessConfig : conf/access.conf

- 아파치 웹 서버의 환경설정 파일은 'httpd.conf' , 'srm.conf' , 'access.conf' 로 사용하는데 관리의 용이성을 위해

  'httpd.conf' 내 위 항목으로 각 내용을 정의하여 사용한다.

- 3개의 파일 로딩 순서는 "httpd.conf > srm.conf > access.conf" 로 실행된다.

 

* MinSpareServers : 10
* MaxSpareServers : 20

- 성능향상과 빠른 응답속도를 위해 생성하는 유휴서버(서비스대기 중인 프로세스)의 개수를 설정하는 항목
- 유휴서버가 MinSpareServers의 개수(10) 보다 적으면 추가로 생성, MaxSpareServers의 개수(20)보다 많으면 세션만료


* StartServers : 5  

- httpd 가 시작될 때 자식 프로세스의 갯 수를 설정. 시작시 동시에 띄우게 될 웹 데몬의 갯 수라 보면 된다.

- 데몬 동작 후 시스템의 상황에 따라 동적으로 변동되므로 큰 의미는 없다.

 

* MaxClients : 150

- 접근할 수 있는 클라이언트의 최대 갯 수 설정항목.

지정한 개수이상 클라이언트의 요청 발생시 아파치는 응답하지 않고 이 요청을 무시한다.(시스템의 자원 낭비 방지)

 

* MaxRequestsPerChild : 30

- 아파치 웹서버의 자식프로세스들에 대한 클라이언트의 요청 개수를 지정

- 만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 해당 자식프로세스는 자동으로 죽게되고,

  이 값을 0으로 설정하면 무제한으로 설정이 되므로 적절히 조절할 것.

 

* BindAddress : *  

- 서버가 응답할 수 있는 IP Address를 설정

- 하나의 시스템에 있는 아파치 웹 서버 하나로 여러 웹 서버처럼 관리하는 웹 호스팅 서비스등에서 많이 이용.

- "*" 은 "모든  IP Address" 에 대해 응답, IP Address를 지정한다면 지정한 IP Address에 대해서만 응답

웹 호스팅 서비스를 하고자 한다면 여러개의 IP Address를 ISP로부터 할당받아 지정해 주면된다.

- "httpd.conf" 파일의 'VirtualHost' 부분에서 IP 기반 버추얼 호스팅을 하기 위해서 필수 설정 사항이다.

 

* Port : 80

- 아파치 웹 서버의 기본포트를 지정(특별한 경우가 아니면 기본 포트인 80 을 적용)

사용가능한 포트는 0 ~ 65535이며 1024이하의 포트 번호는 Well Known Port 라고 해서 시스템에서 예약되어

   root 만 Listen 상태로 만들 수 있게 설정되어 있다. 그래서 1024 이상의 포트 번호를 지정해서 사용할 것.
-
Port 를 9702 로 지정했다면, 웹 브라우저로 접근시 [ http://www.net2free.net:9702 ] 형태로 접속해야한다.

- 단, 80번은 default이므로 Port 번호를 생략할 수 있다.

 

 

위 기재된 모든 내용은 httpd.conf 파일내 모든 내용을 담고 있지는 않습니다. 추가로 궁금한 내용이 있거나 꼭 알아야 할 항목들이 있다면

위키피디아를 참조하시거나 문의를 남겨주세요^^

AND