starland

[아파치] httpd.conf 설정 환경 본문

짬통

[아파치] httpd.conf 설정 환경

starland 2010. 3. 1. 23:54
반응형

출처 : httpd.conf 설정 환경 (아파치)

 

ServerType standalone

아파치데몬의 실행방법을 결정한다.
inetd / standalone 두가지 구동방식이 있으며, 아파치 데몬은 standalone 방식으로 구동되는게 좋다.
standalone 방식은 독립적으로 데몬을 실행시킨다는 의미이며,커널에서 웹 데몬이 프로세스로 작동중이어서 외보로부터의 요청에 즉각적으로 응답을 할수있다.반면 항상 프로세스가 떠있으므로 시스템 자원의 낭비를 가져올수도있다.
inetd 방식은 inetd라는 슈퍼데몬에 의해서 모든 서비스가 관리된다.
만약 외부로부터 ftp 요청이 들어오면 inetd 데몬은 이 서비스의 성격을 파악하고이에 맞는 ftp 데몬을 호출하여 응답하도록한다.telnet,named,sendmail 등이 inetd데몬에 속하며 웹데몬을 inetd 방식을 사용할경우 반응속도의 저하밑 하나의 데몬을 제시작하기위해서 inetd 전체의 데몬에 영향을 주는것이 단점이다.

Server Root "/usr/local/apach"

웹서버에 관련된 환경설정 파일,에러 파일,로그 파일들이 존재하는 디렉토리 위치를 지정한다. 경로의 마지막에 / 를 절대로 붙여서는 안됀다.

#LockFile /usr/local/apache/logs/httpd.lock

아파치를 컴파일할때USE_FCNTL_SERIALIZED_ACCEPT or USE_FLOCK_SERIALIZED_ACCEPT
로 컴파일했을경우 사용되는 잠금파일의 위치를 지정한다.
default는 비 활성화이다.

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

서버가 실행될때 프로세스의 ID,즉 PID 값이 기록되는 위치를 지정한다.

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

이 지시자는 특정 플랫폼에서 아파치서버 프로세스간에 서로 통신하기 위해 특정한파일을 매개로 해야할 경우 사용된다.여러분의 서버가 이 파이을 사용하는지여 여부는 아파치 데몬을 실행시킬때 이 파일이 생기는지 확인하면된다.
만약 이 파일이 생긴다면, 각각의 아파치프로세스가 이 파일에 동시에 접근하여 이파일을 개방하는 일이없도록해야한다.

Timeout 300

클라이언트에게 타임아웃 신호를 보낼때까지의 기다리는 시간으로 단위는 초이다.

KeepAlive on

지속적인 접속 즉 한번 연결에 대하여 한번이상의 요청을 허용할것인가 아닌가를 결정한다.
어떤 유저가 서버에 접속하여 웹서핑을하다가 다른 페이지를 요청할때가 많다.이때처음부터 다시 connection이 이루어져야한다면 불필요한 일이 반복될것이다.
이것을 보완하기위해서 지속적인 connection을 유지할수있게한다.하지만 이 유지가무한정 유지되는것은 아니다.keepalive timeout에 설정된 시간만큼만의 유지만해준다.이 설정을 취소할려면 off 옵션을 사용하면된다.

MaxKeepAliveRequests 100

지속적인 접속동안에 허용할 최대 요청의 횟수를지정한다.
0 은 요청 횟수의 제한을 두지않는다는 말이다. 이 값이 높으면 웹서버의 성능에좋은 결과를 가져올것이다.

KeepAliveTimeout 15

지속저인 접속을 허용한 상태에서 15 초 동안 다음 요청이 없을경우 이접속을 해제한다.

MinSpareServers 5

아파치가 여기에 설정된 개수의 프로세스는 항상 남겨두도록한다.

MaxSpareServer 10

여기에 지정된 자식프로세스의 이상은 만들지 않는다.

StartServers 5

child 아파치 시작시 생성되는 서버의 프로세스의 수를 결정한다.
여러분이 아피치데몬을 시작하고 나서 ps aux | grep apache 하면 6 개의 프로세스가떠있는것을 확인할수있다. 이는 이 자식프로세스가 5개이고 최상위 아파치데몬이하나가 있다는것이다.

MaxClients 150

동시에 처리할수있는 클라이언트부터의 요청횟수를 제한한다.

MaxRequestPerChild 0

아파치서버에서 생성된 각각의 자식 프로세스는 여기에 설정된 횟수만큼 요청을 처리하고 자동으로 사라진다. 0 은 시스템이 재부팅될 때까지 계속 동작한다.

#Listen 3000

아파치에게 하나 이상의 IP 혹은 포트에 주의를 기울이라고 지정하는 것이다.
기본설정은 아파치가 모든 IP 주소의 PORT로 지정한 포트로부터의 모든 요청에 응답하도록 되어있다.그러므로 이 지시자는 아파치가 감시해야할 IP주소와 PORT의 쌍을한정하는 역활을한다.Listen 지시자는 여러번 사용할수있다.

Listen 80
Listen 8080

이렇게 설정하면 포트 80 번과 포트 8080 에서의 접속에 응답을할것이다.

Listen 192.168.0.1:80
Listen 192.168.0.2:8080

이렇게 설정하면 두개의 아이피와 포트에서 접속을 허용한다.

#BindAddress *

아파치가 해당시스템에 할당된 모든 IP 주소를 감시하지않고 위에 설정된 IP 주소만감시 하도록한다.

Port 80

bindaddress 혹은 listen이 없으면서 가 설정이되어있지 않을경우 아파치가 감시해야될 port 를 정의한다.

User nobody
Group nobody

아파치 요청에 대해 응답을할때 어떤 UID,GID를 가질것인지 규정한다.

ServerAdmin root@server

서버에 문제가 있을시 여기에 지정된 email로 메일을 보낸다.

ServerName server

서버의 호스트 이름을 지정한다. 이 지시자가 사용되지 않았을때 아파치는 시작시DNS 요청에 의해 호스트 이름을 정한다.

DocumentRoot "/usr/local/apache/htdocs"

아파치의 기본 웹문서 디렉토리를 지정한다.

AccessFileName .htaccess

이 지시자는 per-directory 접속 제어 파일의 이름을 지정한다.
아파치는 기본 설정에 의해 클라이언트 시스템에 의한 접속 요청을 받을때 마다 .htaccess 파일을 찾는다. 예를 들어 www.angelsoma.com 이라는 아파치 웹서버가 구축되어있다고 가정하면 클라이언트에서 www.angelsoma.com 이라는 도메인을 요청하게 되면 아파치는 아래의 순서로 기본 페이지를 찾는다.

/.htaccess
/usr/.htaccess
/usr/local/.htaccess
/usr/local/apache/.htaccess
/usr/local/apache/htdocs/.htaccess

아파치가 이모든 검사하며 제어 파일을 찾는다.만약 아파치 서버가이검사 과정을 거치지 않기를 원한다면 지시자에 AllowOverride None 옵션 설정을하면된다.

UserCanonicalName on

아파치가 자신을 가리키는 URL을 구성할것인지 제어한다.
예를 들어 http://angelsoma.com/~soma/index.html 에대한 요청을 http://angelsoma.com/~soma/index.html/ 로 리다이렉션을 할때 사용된다.
리다이렉션할때 사용되는 호스트 네임과 포트는 만약 UserCanonicalName 이 on 으로셋팅이 되어있아면 ServerName 과 port에 지정된 내용이적용되며, off 로 설정되어있다면 원래 요청에서 사용된 호스트네임과 포트가 적용된다.

Default Type text/plain

웹서버의 기본 컨텐츠를 정하는데 사용된다.

HostnameLookups off

만약 이 설정이 on 으로 되어있다면 아파치 웹서버는 요청이들어오는 모든 클라이언트의 hostname을 찾게되고, 이정보를 log 파일에 hostname을 남기게된다.
이 작업은 오랜시간이 걸릴수있으므로 웹서버에 부하는 줄수가있다. 그러므로 off로설정하는게 웹서버의 속도 향상에 도움을 줄것이다. 이 기능이 off 로되어있다면log 파일에는 ip 정보가 남게된다.

ErrorLog /usr/local/apache/logs/error_log

접속이 실패하였을경우 이 로그정보를 남길 위치를 지정한다.

CustomLog /usr/local/apache/logs/access_log common

웹서버에대한 요청이 정상적으로 처리되었을경우 남길 로그의 위치를 지정한다.

ServerSignature On

클라이언트가 프록시 환경에서 사용될때 자기 요청을 실제로 처리한서버가 어느서버인지 알아낼수있게한다. ServerSignature 는 서버가 생성한 문서의 끝부분에 서버의 버전과 버추얼 호스트에서 지정된 servername 등을 나타낸다.


   Options FollowSymLinks
   AllowOverride None


이 설정은 시스템의 전체 파일시스템에 적용되는 내용이다.


   Order allow,deny
   Deny from all


이 설정은 특정파일에 대해서 다른 지시자의 내용을 적용할때 사용한다.

#
#   SetHandler server-status
#   Order deny,allow
#   Deny from all
#   Allow from .your domain name


이 지시자는 특정 URL에 대해서 다른 지시자의 내용을 적용할때 사용된다.

Options 에 대한 설명

 All - MultiViews,IncludesNOEXEC,SymLinksIfOwnerMatch 를 제외한 모든옵션을
       활성화.
 ExecCGI - CGI스크립트를 사용할수 있도록 한다.
 FollowSymLinks - 심볼릭 링크 사용을 할수있게 한다.
 Includes - 서버측 포함기능(SSI)을 사용할수있으며 SSI를 사용하려면 이 옵션
       을 활성화 해야한다.
 IncludesNOEXEC - 서버측 포함 기능은 사용할수있으나 #exec,#include를 이용한
       CGI스크립트는 사용할수없다.
 Indexes - 고객의 디렉토리를 지정하는 URL로 접속했을때 index.html 파일이없
       으면 디렉토리 내용을 브라우저에서 출력한다.
 MultiViews - 컨텐츠 협상기능을 사용할수 있게한다.
 SymLinksIfOwnerMatch - 동일한 사용자의 소유로 설정된 심볼릭 링크만 허가함.

AllowOverride none  

 이 지시자를 통해 .htaccess 파일에 있는 지시자가 그 이전에 설정된 여러 지시
 자들을 무시하고 사용되도록 한다.
 
 Limit - 호스트명이나 IP 주소로 나타난 호스트들에 대한 접속제한을 재설정
 Options - Options 지시자에 대한 재설정을 허용한다.
 All - 위의 모든 것을 포함한다.
 None - 위에서 나열한 모든것도 포함하지 않는다.


AddHandler  cgi-script .cgi .pl

 이 지시자는 어떠한 파일이든 cgi,pl 확장자를가진다면 아파치 입장에서는 실행
 파일로 간주한다.

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

 이 지시자는 지정한 URL 경로로의 요청을 디렉토리에 있는 CGI가 실행되게해준
 다.디렉토리는 절대 경로로 설정해야된다.

반응형