작성자 : 기술지원부 김 삼 수 kiss@nextline.net
Apache 섹션설명
httpd.conf 파일 httpd.conf 파일은? 아파치 설정 파일인 httpd.conf 파일의 수많은 지시자들을 설정하고 변경함으로써 아파치의 성능과 안정성, 그리고 보안을 구현할 수 있습니다.
httpd.conf 파일 위치 소스로 설치 하셨을 경우 설치한 위치에 따라 달라 질 수 있으나, apache 디렉토리내의 경로는 /apache/conf/httpd.conf로 동일합니다.
소스컴파일 번전 : /usr/local/apache/conf/httpd.conf RPM 설치버전 : /etc/httpd/conf/httpd.conf
httpd.conf 설정지시자
아파치 전체적인 영향이 미치는 설정 Section 1: Global Environment 주 서버에 대한 설정 Section 2: 'Main' server configuration 가상 호스트에 대한 설정 Section 3: Virtual Hosts
( 1 ) Global Environment
전체 환경설정 파트로 Global Environment에서 설정하는 것들은 아파치 웹 서버에 전반적인 영향을 미칩니다.
ServerType standalone
서버의 구동방법으로는 standalone과 inetd방식이 있습니다. standalone 방식은 하나의 웹데몬(아파치서버)이 클라이언트의 접속을 모두 처리하는 방식으로 응답속도가 빠른 방법으로 주로 이 방식을 사용합니다. inetd 방식은 inetd라는 시스템의 /etc디렉토리 끝에 존재하는 inetd라는 슈퍼데몬이 클라이언트의 접속요구가 있을 때마다 웹 서버를 구동하는 방식입니다. 일반적으로 응답속도가 빠르고 효율적인 standalone으로 설정하여 사용합니다.
ServerRoot "/usr/local/apache"
아파치서버의 홈 디렉토리를 지정하며 절대경로로 지정합니다. 이후로 나오는 대부분의 경로들은 이 경로에 대한 상대경로로 지정이 됩니다. 예를 들어 환경설정파일, 에러로그파일등의 상대경로의 기준이 되는 위치입니다.
PidFile logs/httpd.pid
PidFile 설정은 ServerType을 Standalone으로 설정 했을 때만 유효한 것으로 아파치 서버의 프로세스가 생성되어 있을 때 그 프로세서ID(PID)를 기록하는 파일을 지정합니다. 당연히 아파치서버가 재 시작되거나 과부하로 인해 PID가 바뀌게 될 경우에는 이 파일의 PID값도 바뀌게 됩니다. 즉 다시 말해서 여기서 지정된 파일(httpd.pid)에 실행되고 있는 아파치서버의 프로세스번호(PID)값이 기록됩니다. ServerRoot를 기준으로 한 상대경로로 지정됩니다. 절대경로로 지정하려면 "/"로 시작하는 절대경로를 적어주면 됩니다.
ResourceConfig conf/srm.conf AccessConfig conf/access.conf
아파치 서버의 환경설정파일은 3개이며 httpd.conf, srm.conf, access.conf 가 그것입니다. 그러나 하나의 설정파일로 하는 것이 효율적이기 때문에 지금은 httpd.conf파일안에 3개의 파트(Section)로 나누어서 하나의 파일안에서 설정을 하고 있습니다. srm.conf와 access.conf파일의 내용은 현재 비어있는 상태이지만, 필요하다면 이 파일 내에도 설정을 할 수 있습니다. 아파치 서버가 실행이 될 때는 httpd.conf, srm.conf, access.conf 순으로 언제나 이 3개의 파일을 모두 읽고 난 뒤에 실행이 되기 때문입니다. 만약 이 두 개의 파일을 서버가 무시하도록 하려면 다음과 같이 하거나 "#"으로 붙여 두면 주석처리되어 무시됩니다.
ResourceConfig /dev/null AccessConfig /dev/null
Timeout 300
클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와 서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을 초단위로 설정합니다. 초기값은 1200이며 보통은 300초로 지정을 합니다. 네트웍의 속도가 나쁠수록 수치 값은 높게 설정하는 것이 좋습니다.
KeepAlive On
접속한 채로 특별한 요청 없이 지속적인 연결을 허용할 것인지를 설정합니다. 허용하지 않으려면 off로 설정합니다.
MaxKeepAliveRequests 100
클라이언트가 접속된 시간 동안 아파치서버에 요청할 수 있는 최대의 개수를 지정합니다. 0을 지정하면 제한 없음을 의미하며, 서버의 성능향상을 위하여 가능한 높은 값이 좋습니다.
KeepAliveTimeout 15
아파치 서버는 같은 접속상태의 클라이언트에서 여기서 지정한 초만큼의 요청이 없었을 때 접속을 끊게 됩니다.
MinSpareServers 5 MaxSpareServers 10
아파치 웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재 서비스대기 중인 프로세스)를 만들게 되는데 이 유휴서버의 개수는 시스템의 상황에 따라 달라지게 됩니다. 유휴서버가 MinSpareServers의 개수(5) 보다 적게 되면 추가로 생성을 하게 되며 MaxSpareServers의 개수(10)보다 많게 되면 죽이게 됩니다. 즉, 유휴서버의 개수를 적절히 조절하기 위한 것이라 생각하면 됩니다.
StartServers 5
아파치 웹 데몬이 구동될 때 자식프로세스를 몇 개로 할 것인가를 지정합니다. 시작할 때 동시에 띄우게 될 웹 데몬의 개수입니다. 그러나 웹데몬이 구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 대부분 합리적인 개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은 아니다.
MaxClients 150
아파치 웹 서버에 접근할 수 있는 클라이언트의 최대 갯 수는 이 상한 값으로 제한합니다. 여기서 지정한 개수이상의 클라이언트의 요청이 생긴다면 아파치는 응답하지 않고 이 요청을 무시합니다. 이를 제한하는 이유는 시스템의 자원을 아파치 웹서버가 무한정 차지하는 것을 방지하기 위한 것입니다.
MaxRequestsPerChild 30
아파치 웹서버의 자식프로세스들이 클라이언트의 요청 개수를 지정합니다. 만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 이 자식프로세스는 자동으로 죽게 됩니다. 이 값이 0으로 설정이 됩니다면 자식프로세스가 자동으로 죽는 일은 없을 것입니다. 그러나 0아닌 다른 값으로 설정 함으로서 프로세스의 수를 적절히 조절하여 시스템의 부하조절과 자원낭비를 어느 정도 방지 할 수 있습니다.
Listen 3000 Listen 12.34.56.78:80
시스템의 기본값이외에 다른 IP Address와 포트에 대해서도 연결할 수 있도록 해 줍니다. 환경설정파일(httpd.conf) 맨 뒤에 나오는 가상호스트(Virtual Host)부분에서 설정되는 가상호스트를 설정하기 위해 필요하다.
BindAddress *
서버가 응답할 수 있는 IP Address를 설정하는 것입니다. 하나의 시스템에 있는 아파치웹서버 하나로 여러 웹서버처럼 관리하는 웹호스팅서비스등에서 많이 이용하는 것으로 여러 IP Address를 인식할 수 있게 합니다. "*"으로 설정이 되었다면 모든 IP Address에 대해 응답할 수 있으며, IP Address를 지정한다면 지정한 IP Address에 대해서만 응답할 수 있게 됩니다. 여러개의 IP Address를 ISP로부터 할당받아서 웹호스팅서비스를 하고자 한다면 이부분에서 지정해 주면됩니다. 이 설정파일의 맨 뒷부분에 나오는 <VirtualHost>부분의 IP bind 가상호스트부분에서 아파치 웹서버가 응답할 수 있도록 하려면 여기서 IP Address를 지정해 줘야 합니다.
ExtendedStatus On
server-status로 아파치웹서버의 상태를 상태를 모니터링 할 때 "자세한상태정보"기능을 제공할 것인지(On) 아닌지(Off)를 설정하는 것입니다.
( 2 ) 'Main' server configuration
Section 2에서 설정하는 항목들은 아파치의 주된서버가 사용할 값들을 지정합니다. <VirtualHost>에 정의된 가상호스트들에서 지정하지 않는 것은 여기서 지정된 값이 기본값으로 적용됩니다. 또한 여기서 지정하는 값을 각 <VirtualHost>내에도 지정할 수 있으며 이경우엔 각<VirtualHost>내에서 지정한 값이 우선 적용됩니다.
Port 80
아파치웹서버의 기본포트를 지정합니다. 특별하게 사용하는 것이 아니라면 80번으로 해둬야 합니다. 사용 가능한 포트는 0 ~ 65535이며 1024이하의 포트번호는 시스템에서 특별하게 예약되어 있으므로 80번 이외의 다른 포트를 사용하려면 1024이상의 포트번호를 지정해서 사용해야 할 것입니다. 특별한 지정이 없다면 <VirtualHost>에 정의된 각각의 가상호스트들의 기본포트가 됩니다. 만약 <VirtualHost> 내에서 Port가 지정이 된다면 그 포트번호가 우선합니다.
(특별히 PORT를 따로 지정해 줄 필요가 있을 때는 따로 지정해 주며, 이때는 웹서버로 접근할 때 반드시 따로 지정한 PORT번호로 접근해야 합니다. 예를들어 Port 1234로 지정했다면, 접근시 : http://www.domain.co.kr:1234로 접속 해야 합니다. 단, 80번은 default이므로 Port번호를 입력하지 않아도 도메인만으로 그냥 접근할 수 있습니다. 예: http://www.domain.co.kr )
User nobody Group nobody
아파치 웹데몬이 요청을 받았을 때 여기서 지정한 user와 group으로 응답을 하게 됩니다. 이 설정은 ServerType이 Standalone방식이며, 아파치의 실행이 root권한으로 실행이 되었을 때 유효한 것입니다. 많은 웹서버관리자들이 nobody로 설정을 해 두고 있으며, 만약 시스템에 nobody user가 없다면 새로생성(useradd)을 해야 할 것입니다. 단, root로 설정하는 것은 절대로 있어서는 안되며 nobody이외의 다른 시스템사용자 id로 지정을 한다면 정말 신중히 모든면(시스템 보안 및 자원사용등)에서 깊게 고려를 해봐야 합니다.
ServerAdmin ask@www.nextline.co.kr
여기서 지정하는 email address는 웹문서 로딩에러등의 문제에서 클라이언트측으로 보내질 메일주소값입니다. 대부분 웹서버관리자의 email address로 설정을 합니다.
ServerName nextline.net
클라이언트에게 보여주는 호스트이름을 지정합니다. www를 쓰지 않는 호스트에서 www를 쓰는 것처럼 보이게 할 수 있습니다. 예를 들어 bbs.nextline.co.kr을 www.nextline.co.kr로 지정해서 쓸 수 있습니다. 이곳에 IP Address를 적게 되면 클라이언트에는 Ip Address를 보여줍니다.
DocumentRoot "/usr/local/apache/htdocs"
아파치 웹서버의 웹문서가 있는 경로를 지정합니다. 예를 들어 "http://www.nextline.co.kr/index.html"의 초기 문서라면 이 초기문서의 절대 경로는 여기서 지정된 "/usr/local/apache/htdocs/index.html"이 됩니다. 경로의 맨 마지막에 "/"를 추가해서는 안됩니다. Alias를 사용하여 다른 위치를 지정할 수도 있습니다.
<Directory /> Options FollowSymLinks AllowOverride None </Directory>
<Directory>에서 지정되는 값에 대한 옵션은 다음과 같은 의미를 가지고 있습니다. None : 모든 허용을 하지 않는다. All : 모든 허용을 합니다. Indexes : 웹서버의 디렉토리 접근시에 DirectoryIndex 에서 지정한 파일(index.html 또는 index.php)이 존재하지 않을 경우 디렉토리내의 파일목록 리스트를 웹브라우저로 보여줍니다. 웹서버 보안을 위해 사용하지 않는 것이 좋습니다. Includes : SSI 사용을 허용하는 설정입니다. FollowSymlinks : 심볼릭 링크를 허용합니다. ExeCGI : perl 등과 같은 CGI 실행을 허용하기 위한 설정입니다. MultiViews : 웹브라우즈의 종류나 웹문서의 종류에 따라서 가장 적합한 페이지를 보여줄 수 있도록 하는 설정입니다.
UserDir public_html
하나의 아파치 웹서버에서 여러 사용자의 홈페이지를 별도로 만들어 관리할 때 필요한 개별 가입자의 홈페이지 디렉토리 이름입니다. 예를 들어 nextline란 계정가입자의홈페이지는 "http://nextline.co.kr/~nextline"라는 홈페이지를 가지고 있을 때 nextline의 계정에서 "public_html"이란 디렉토리가 홈디렉토리가 되어 이 디렉토리에 있는 초기문서 index.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)의 접근에 대한 옵션을 지정한 것입니다.
Options(옵션) 설명 : 옵션 구문은 Options 라는 키워드로 시작됩니다. FollowSymLinks : 실볼릭 링크를 허용합니다. SymLinksIfOwnerMatch : 링크를 허용하지만 링크 하고자 하는 사용자의 소유로 되어 있는 것만 링크 가능합니다. ExecCGI : CGI 실행을 허용합니다. Includes : SSI를 허용합니다. IncludesNOEXEC : SSI를 허용하지만 "#exec" 와 "include"로 정의한 CGI 실행은 거부합니다. Indexes : 웹 서버의 디렉토리에 접근 했을 때 DirectoryIndex 지시자로 설정한 파일이 없을 경우 디렉토리안의 파일 목록을 보여줍니다. MultiViews : 클라이언트의 요청에 따라 적절하게 페이지를 보여준다. 쉽게 생각하면 HTTP 헤드 정보가 Accept-Language:ko 라면 Korea 언어에 맞게 데이터를 클라이언트에 전송합니다. None : 모든 설정을 부정합니다. All : MultiViews를 제외한 옵션을 의미합니다.
AllowOverride 설명 AllowOverride는 클라이언트의 디렉토리 접근 제어에 관한 설정입니다. AllowOverride 는 AccessFileName 지시자와 밀접한 관계를 가지고 있습니다. 아래의 각 설정값들은 AccessFileName 지시자에서 설정한 파일에 적용됩니다.
None : AllowOverride를 off 한다는 것입니다. All : AccessFileName 지시자로 설정한 파일에 대해 민감하게 반응한다. 모든 지시자를 사용할 수 있습니다. AuthConfig : AccessFileName 지시자에 명시한 파일에 대해서 사용자 인증 지시자 사용을 허락합니다. AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require등을 사용할 수 있습니다. FileInfo : AccessFileName 지시자로 설정한 파일에 대해서 문서 유형을 제어하는 지시자 사용을 허락합니다. AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority등을 사용할 수 있습니다. Indexes : AccessFileName 지시자로 설정한 파일에 대해서 디렉토리 Indexing을 제어하는 지시자 사용을 허락합니다. AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOpions, ReadmeName등을 사용할 수 있습니다. Limit : AccessFileName 지시자로 설정한 파일에 대해서 호스트 접근을 제어하는 지시자 사용을 허락합니다. Allow, Deny, order 등을 사용할 수 있습니다. Options : AccessFileName 지시자에 명시한 파일에 대해서 Options 그리고 XBiHack 등과 같은 지시자 사용을 허락합니다. Options, XBitHack등을 사용할 수 있습니다. AloowOverride와 AccessFileName에 설정한 파일을 이용해서 아파치 인증 기능을 사용할 수 있습니다.
DirectoryIndex index.html index.php index.htm
디렉토리만을 지정했을 경우에 그 디렉토리에서 찾게 될 문서의 순서를 지정해 줍니다. 즉, 디렉토리 이름만을 지정하더라도 여기서 지정한 index.html을 찾아서 웹브라우즈에 보여줍니다. 여러개의 파일을 지정할 수 있으며, 이런 경우에는 순서대로 찾아서 보여줍니다. 예를 들어 "DirectoryIndex index.html index.htm"로 지정했다면 먼저 "index.html"을 찾아서 있다면 이 파일을 로딩하고, "index.html"이 없다면 "index.htm"을 찾아서 로딩해 줍니다.
AccessFileName .htaccess
디렉토리별로 접근 제어할 정보(ID, Password)를 담고 있는 파일을 지정합니다. 디렉토리별로 인증을 거쳐서 접근할 수 있는 설정을 하기 위한 것입니다. 예를 든다면 어떤 홈페이지의 전부나 혹은 일부에로 접근하려고 할 때 ID, Password를 묻는 창이 뜨면서 맞게 입력한 경우에만 접근 허용하는 것입니다. 보안상의 이유로 이 파일의 이름을 다른 이름으로 바꾸고 싶다면 ".htaccess"대신에 다름이름을 적어주면 됩니다.
<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>
바로 위에서 설정한 파일(".htaccess")의 내용을 볼 수 없게 할 때 사용하는 옵션입니다. 보안상의 이유로 이 옵션은 설정해 두는 것이 좋습니다. 만약 이 옵션을 주석 처리해 둔다면 ".htaccess"파일에 대한 보안은 누구도 장담할 수 없을 것입니다.
UseCanonicalName On
TypesConfig conf/mime.types
웹서버의 mime type을 지정한 파일을 지정합니다. mime.types파일은 서버에 의해 리턴될 수 있는 파일명과 mime형식을 기술해 놓은 파일입니다.
DefaultType text/plain
mime.types 파일에 정의 되어있지 않은 파일형식에 대한 요청을 받았을 때 알 수 없는 문서타입에 대하여 사용할 기본적인 mime 타입을 정해둔다.
HostnameLookups Off
웹서버의 로그(access_log)를 지정하는 Format에서 "DNS Lookup"으로 지정하였을 때, domain으로 남길 것인가, IP Address로 남길 것인가를 지정합니다. Default로 Off는 IP Address로 남기는 것이며, Domain으로 변경할 필요가 없으므로 on으로 설정한 것보다는 속도가 조금 빠르다. on으로 하게 되면 IP address를 IP Domain으로 변환해야 하므로 속도가 조금 느릴 수 있습니다.
ErrorLog logs/error_log
아파치 웹서버의 에러로그 기록파일을 지정합니다. 참고할 사항은 맨 마지막에 설정하는 <VirtualHost>부분에서 각서버에 대한 에러파일을 지정해 두지 않으면 그에 대한 에러로그도 여기에 기록되며, 지정해 두게 되면 그에 해당하는 로그는 이 파일에 기록되지 않는다.
LogLevel warn
바로위에서 설정한 에러로그 파일에 얼마나 자세하게 적을 것인지를 결정합니다. 다음에 해당하는 순서대로 중요도가 정해진다. " debug → info → notice → warn → error → crit → alert → emerg "
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combind LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent
common : 가장 일반적인 로그 기록입니다. referer : 현재 아파치 서버에 접속하기 전에 머물렀던 URL을 기록합니다. agent : 접속자의 웹 브라우저(OS 포함) 종류를 기록합니다. combined : 위의 3가지 로그 포멧을 모두 조합한 것입니다. 접속자에 대한 많은 정보를 기록하길 원한다면 combined으로 설정하면 된니다.
바로 아래에서 사용할 CustomLog에서 사용할 몇가지 로그형식의 별명을 정한 곳입니다. 웹서버의 관리자나 서버관리자는 이 부분을 특히 유심히 봐둬야 합니다. 웹서버의 로그를 어떤 식으로 남길 것인가를 결정하는 Format을 지정하는 곳입니다. 원하는 정보를 지정해서 볼 수 있으므로, 관리자에게 필요한 Format으로 설정해야 하며, 또한 접속통계를 내기에 적당한 Format으로 설정해 둬야 합니다.
CustomLog logs/access_log common
위에서 정한 로그형식(여기선 common)대로 로그를 남기게 됩니다. 맨마지막에서 지정하는 <VirtualHost>부분에서도 아파치 1.3.9버전 부터는 CustomLog를 가상호스트별로 지정할수 있도록 CustomLog를 제공합니다. <VirtualHost>에서 CustomLog를 지정하지 않으면 여기서 지정한 형식대로 로그를 남기게 되며 <VirtualHost>부분에서 CustomLog를 지정했을 경우에는 여기서 지정한 로그형식은 무시됩니다.
#CustomLog logs/referer_log referer #CustomLog logs/agent_log agent #CustomLog logs/access_log combined
위에서 지정한 4가지의 로그형식(combind, common, referer, agent)중에서 원하는 부분의 #(주석행)을 제거하면 지정됩니다.
ServerSignature On
서버가 생성하는 문서(error documents, FTP directory listings, mod_status and mod_info output etc., but not CGI generated documents)의 trailing footer line의 설정을 가능하게 합니다.
Alias /icons/ "/usr/local/apache/icons/"
필요한 만큼의 디렉토리 별칭을 만들어 쓸 수 있습니다. 사용하는 형식은 다음과 같습니 다. Alias fakename(가상이름) realname(진짜이름)
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
ScriptAlias는 서버스크립트를 포함합니다. ScriptAlias는 실제디렉토리 안에 들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것을 제외하고는 근본적으로 Aliases와 같습니다.
IndexOptions FancyIndexing
IndexOPtions는 디렉토리목록을 표시할 때 사용할 옵션을 지정합니다. Standard는 표준적인 디렉토리를 나타내며, FancyIndexing은 좀더 예쁜 디렉토리목록을 표시해 줍니다.
아래에서 지정하는 AddIcon으로 시작하는 설정은 바로위에서 설정한 디렉토리인덱싱 옵션을 FancyIndexing으로 한 경우에 해당하며 디렉토리 목록을 표시할 때 각 파일 확장자에 따라서 어떤 아이콘을 선택하여 보여줄 것인지를 지정합니다.
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf AddIcon /icons/text.gif .txt AddIcon /icons/c.gif .c AddIcon /icons/p.gif .pl .py AddIcon /icons/f.gif .for AddIcon /icons/dvi.gif .dvi AddIcon /icons/uuencoded.gif .uu AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl AddIcon /icons/tex.gif .tex AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif .. AddIcon /icons/hand.right.gif README AddIcon /icons/folder.gif ^^DIRECTORY^^ AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
여기서 지정한 확장가가 아닌 경우에 여기서 지정한 기본아이콘으로 보여줍니다.
AddDescription "GZIP compressed document" .gz AddDescription "tar archive" .tar AddDescription "GZIP compressed tar archive" .tgz
AddDescription은 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을 표시할 때 사용합니다. 이 설정은 IndexOptions가 FancyIndexing으로 설정되었을때만 표시되며, 설정형식은 다음과 같습니다. 형식 : AddDescription "표시할 설명" 파일확장자
ReadmeName README
ReadmeName은 디렉토리목록표시 뒤에 붙여서 보여줄 README파일의 이름을 지정합니다.(일종의 꼬릿말)
HeaderName HEADER
HeaderName은 디렉토리목록표시 앞에 붙여질 파일의 이름을 지정합니다. (일종의 머릿말)
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
디렉토리목록을 인덱싱할 때 제외할 파일명을 지정합니다. 즉 디렉토리 목록에 포함하지 않을 파일을 지정합니다. 쉘스타일의 와일드카드(*, ?)가 허용됩니다.
AddEncoding x-compress Z AddEncoding x-gzip gz tgz
AddEncoding은 특정브라우즈(Mosaic/X 2.1+)에서 받고있는 중에 정보에 대한 압축해제를 할 수 있도록합니다. 단 모든 웹브라우즈에서 이 기능을 제공하는 것은 아닙니다.
AddLanguage en .en AddLanguage fr .fr AddLanguage de .de AddLanguage da .da AddLanguage el .el AddLanguage it .it
AddLanguage는 문서의 언어를 지정하게 합니다.
LanguagePriority en fr de
언어의 우선순위를 내림차순으로 지정합니다.
AddType application/x-httpd-php3 .php3 AddType application/x-httpd-php3-source .phps AddType application/x-tar .tgz
AddType은 mime.types의 실제 편집 없이도 mime을 설정할 수 있습니다.
AddHandler cgi-script .cgi
AddHandler는 파일확장자를 처리기(Handler)에 매핑(연결)시켜주게 됩니다.
AddType text/html .shtml AddHandler server-parsed .shtml
SSI(Server Side Include)문서를 인식하게 하기위한 설정입니다. SSI코드가 들어가 있는 문서는 확장자가 *.shtml입니다. 시스템의 날짜와 카운터등 CGI프로그램을 하지 않아도 HTML문서에서 단 몇줄로 CGI의 효과를 낼 수 있는 SSI기능을 인식하게끔 하는 설정입니다.
#Format: Action media/type /cgi-script/location #Format: Action handler-name /cgi-script/location
Action은 매칭되는 파일이 호출될 때마다 스크립트를 실행시킬 수 있도록 미디어 타입을 정의합니다.
MetaDir .web
MetaDir은 아파치가 찾을 메타정보파일들의 디렉토리 이름을 지정합니다. 이 파일들은 문서를 전송할 때 포함되는 HTTP 헤더정보가 포함되어 있습니다.
MetaSuffix .meta
MetaSuffix는 메타정보를 포함하고 있는 접미어의 이름을 지정합니다.
에러발생시 응답을 정의할 수 있는 방법을 3가지 나타내고 있습니다.
1) 일반적인 텍스트
ErrorDocument 500 "The server made a boo boo.
2) 지역적인 방향전환
ErrorDocument 404 /missing.html ErrorDocument 404 /cgi-bin/missing_handler.pl
3) 외부 방향전환
ErrorDocument 402 http://some.other_server.com/subscription_info.html
다음의 BrowserMatch는 keepalives기능을 쓰지 못하게 하며 HTTP 헤드방식을 설정합니다.
BrowserMatch "Mozilla/2" nokeepalive
이 설정은 Netscape 2.x 또는 이를 따르는 브라우즈에 대하여 KeepAlive 기능을 쓰지 못하게합니다.
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
이 설정은 잘못 구현된 HTTP/1.1과 301또는 302반응에 대하여 KeepAlive를 적절히 제공하지 못하는 마이크로소프트 인터넷익스플로러 4.0b2d에 관한 것입니다.
BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0
위의 3가지 설정은 기본적인 1.1반응도 처리하지 못하며 HTTP/1.0 스팩을 제한하고 있는 브라우즈에 대하여 HTTP/1.1반응을 하지 못하게 한 것입니다. <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from www.nextline.co.kr </Location>
서버의 상태를 점검할 수 있게하는 설정입니다. 이는 "http://www.nextline.co.kr/server-status"와 같은 형식으로 서버의 상태를 점검할 수 있습니다.
<Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from www.nextline.co.kr </Location>
이설정을 위해서는 mod_info.c가 적재되어야 하며, 이는 "http://www.manualand.co.kr/server-info"와 같은 방식으로 서버의 정보를 볼 수 있습니다. 위에서 설정한 server-status와 함께 실행중인 웹 서버의 상태점검을 위한 것입니다.
<Location /cgi-bin/phf*> Deny from all ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi </Location>
아파치 1.1이전 버전의 오래된 버그에 대한 악용이 있을 시에는 지정한 곳 (http://phf.apache.org/phf_abuse_log.cgi) 으로 방향을 전환시킵니다.
<IfModule mod_proxy.c> ProxyRequests On
아파치 웹서버를 Proxy서버로 사용할 때 on을 해줘야 합니다. 즉 프락시서버 지시자로서 프락시서버를 on 시킵니다.
<Directory proxy:*> Order deny,allow Deny from all Allow from .your_domain.com </Directory>
ProxyVia On
HTTP/1.1 "Via:"헤드처리를 활성화시킬 것인지 비활성화 시킬 것인지를 지정합니다. Off, On, Full, Block중 하나가 올 수 있으며 Full은 서버버전을 포함하며, Block은 나가는 모든 것에 대해 Via:헤더를 제거합니다.
CacheRoot "/usr/local/apache/proxy" CacheSize 5 CacheGcInterval 4 CacheMaxExpire 24 CacheLastModifiedFactor 0.1 CacheDefaultExpire 1 NoCache a_domain.com another_domain.edu joes.garage_sale.com
이 설정은 캐시기능을 활성화 하기 위한 것입니다.
( 3 ) Virtual Hosts
여러분의 시스템에서 여러개의 도메인이나 호스트네임을 설정하여 관리하고자 한다면 <VirtualHost>부분을 설정해 줘야 합니다. 가상호스트에 대한 정보는 http://www.apache.org/docs/vhosts/를 참조해 보면 좀더 자세한 정보를 얻을 수 있습니다. '-S'옵션을 사용함으로써 가상호스트의 설정에 대한 점검을 할 수 있습니다. name-based 가상호스트를 사용하길 원한다면 적어도 한 개 이상의 IP Address를 정의할 필요가 있습니다
NameVirtualHost xxx.xxx.xxx.xxxx:80 NameVirtualHost xxx.xxx.xxx.xxx
<VirtualHost xxx.xxx.xxx.xxx> ServerAdmin ask@nextline.co.kr DocumentRoot /home/nextline/public_html ServerName www.nextline.co.kr ErrorLog /home/nextline/public_html/logs/error_log CustomLog /home/nextline/public_html/logs/access_log common </VirtualHost>
ServerAdmin은 해당서버의 관리자 전자우편이며, DocumemtRoot는 해당서버의 홈디렉토리이며, ServerName은 해당서버의 도메인이며, ErrorLog는 해당서버의 에러파일 위치이며 CustomLog는 로그파일위치와 포맷을 지정한 것입니다.
<VirtualHost _default_:*> </VirtualHost>
Default 가상호스트 설정으로 위에서 설정되지 않은 다른 모든 호스트에 대해서 응답을 하고자 할 경우 설정해 줍니다.
|
|