강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 아파치(Apache) 환경 설정2편

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 아파치(Apache) 환경 설정2

 

 

 

 

 

 

 

 

 

 

 

ErrorLog "logs/error_log"

 

 

 

 

 

 

 

아파치웹서버의 에러로그파일(error_log)의 위치를 지정하는 지시자이다.

 

 

 

만약

<VirtualHost> 설정내에서 별도의 에러로그파일을 사용하지 않는다면 <VirtualHost>내에 설정된 가상호스트들에 대한 로그파일은 여기서 지정한 로그위치를 그대로 사용한다.

 

 

 

 

 

 

 

 

 

LogLevel warn

 

 

 

 

 

 

 

바로위에서 설정한 에러로그 파일(error_log)의 기록내용을 얼마나 자세하게 기록할 것인가를 결정하는 지시자이다.

 

 

 

다음에 해당하는 순서대로 그 중요도가 결정된다.

 

 

 

즉 이 지시자에는 다음과 같은 값들의 설정이 가능하다.

 

 

 

 

emerg

 

alert

 

crit

 

error

 

warn

 

notice

 

info

 

debug

 

emerg : 최상위. 매우위험한 상황의 메시지. 전체공지가 요구되는 메시지. 매우위급한 상황. 시스템을 사용할 수 없는 상황(가장 높은 상황)

 

 

alert : 즉각적인 조치를 취해야하는 상황의 메시지 즉 즉시 행동이 취해져야하는 상황

 

 

crit : 급한상황은 아니지만 치명적인 시스템문제발생 상황의 메시지

 

 

error : 에러가 발생한 상황의 메시지 즉 에러상황

 

 

warn : 주의를 요하는 메시지 즉 경고상황

 

 

notice : 에러가 아닌 알림에 관한 메시지, 보통이지만 중요한 상황

 

 

info : 단순한 프로그램에 대한 정보 및 통계관련 메시지,보통수준으로 알려주는 상황

 

 

debug : 최하위, 디버깅(debugging)관련 메시지(가장낮은 단계)

 

 

 

 

참고로 LogLevel지시자에 설정가능한 위의 값들의 의미는 /etc/syslog.conf파일내의 설정옵션중 우선순위(priority)와 동일하다는 것을 알아두기 바란다.

 

 

 

 

 

 

 

 

 

<IfModule log_config_module>

#

# The following directives define some format nicknames for use with

# a CustomLog directive (see below).

#

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common

 

<IfModule logio_module>

# You need to enable mod_logio.c to use %I and %O

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

</IfModule>

 

#

# The location and format of the access logfile (Common Logfile Format).

# If you do not define any access logfiles within a <VirtualHost>

# container, they will be logged here. Contrariwise, if you *do*

# define per-<VirtualHost> access logfiles, transactions will be

# logged therein and *not* in this file.

#

CustomLog "logs/access_log" common

 

#

# If you prefer a logfile with access, agent, and referer information

# (Combined Logfile Format) you can use the following directive.

#

#CustomLog "logs/access_log" combined

</IfModule>

 

 

 

 

 

 

 

 

아파치 웹로그파일(access_log)에 방문자들에 대한 기록을 어떤 포맷으로 할 것인가에 대한 포맷종류를 설정하는 지시자들이다.

 

 

 

즉 바로 다음 지시자에서 설명하고 있는 CustomLog에서 사용할 몇가지 로그포맷의 이름들(combined, common, referrer, agent, combinedio)을 지정한 곳이다.

 

 

 

웹서버의 관리자나 서버관리자는 이 부분을 특히 유심히 봐둬야한다.

 

 

 

웹서버의 로그기록을 어떤식으로 남길 것인가를 결정하는 Format을 지정하는 곳이기 때문이다.

 

 

 

원하는 정보를 지정해서 볼 수 있으므로, 관리자에게 필요한 Format으로 설정해야 하며, 또한 접속통계를 내기에 적당한 Format으로 설정해두어야 한다.

 

 

 

위의 포맷종류 가운데 combinedio라는 포맷종류는 아파치에 mod_logio.c라는 모듈이 로드되어 있을 때에 %I%O를 추가로 사용한 종류이다.

 

 

 

다음은 이 지시자에서 사용하고있는 각 변수들의 의미를 설명한 것이다.

 

 

 

변 수

의 미

%a

방문자의 원격의 IP주소

(HostNameLookups값이 On이면 도메인으로 기록될 수 있음)

%A

아파치웹서버의 로컬시스템의 IP주소

%b

CLF포맷등에서 HTTP헤더를 제외한 전송량(bytes)

%B

HTTP헤더를 포함한 전송량(bytes)

%f

요청한 파일명(파일이름)

%h

요청을 보낸 원격호스트

%H

요구프로토콜

%l

클라이언트에서 보낸 로그인ID

(즉 원격 로그인ID). htpasswd등으로 특정디렉토리 인증시에 클라이언트에서 입력한 로그인명 즉 ID(identity)

%m

요청방법

%p

요청이 처리되는 포트(canonical포트)

%P

요청을 처리하는 아파치 자식프로세스의 PID번호

%q

질의

%r

첫번째 요청라인

%s

상황코드를 의미함. 즉 클라이언트의 요청에 대한 응답으로서 서버가 보내는 처리상태를 표시함. 가장 마지막의 상황코드기록을 하려면 %>s을 사용함.

%u

사용자인증에 대한 원격의 유저. 클라이언트가 요청한 URL이 기본 HTTP인증 요구에 대한 사용자명을 의미

%U

요청한 URL경로

%v

요청을 받은 서버네임 혹은 가상호스트의 이름

%V

UserCanonicalName설정에 따른 서버네임

%T

클라이언트에서 아파치 자식프로세스에게 처리를 요청한 시간

%t

클라이언트의 요청을 아파치 자식프로세스가 처리하기 위해 소요된 시간(초단위시간). 시간표시 형식은 CLF포맷을 따른다.

 

 

 

(//:시간::time-zone)

%{IncomingHeader}I

IncomingHeader의 내용. 즉 서버에게 보내진 요청의 헤더부분. 끝에 있는 i는 이것이 클라이언트(incoming)헤드임을 표시한다.

 

 

 

 

%{OutgoingHeader}o

OutgoingHeader의 내용. 즉 응답의 헤더부분. 끝에있는 o는 이것이 서버(outgoing)헤더임을 표시한다.

 

 

 

 

%{MODULE_NOTE}n

다른 모듈로 부터의 MODULE_NOTE내용

%I

요청과 헤드를 포함하여 받은 byte

%O

요청과 헤드를 포함하여 보낸 byte

 

 

 

아파치웹서버의 로그파일의 위치(/usr/local/apache/logs/access_log)와 바로 앞의 지시자에서 설정한 로그포맷의 종류(여기선 common)대로 로그를 기록하기 위한 설정지시자이다.

 

 

 

가상호스트(<VirtualHost> ~ </VirtualHost>)부분에서도 개별적인 지정을 할 수 있다.

 

 

 

<VirtualHost>에서 CustomLog를 지정하지 않으면 여기서 지정한 형식대로 로그를 남기게 되며 <VirtualHost>부분에서 CustomLog를 지정했을 경우에는 여기서 지정한 로그포맷형식은 무시되고 별도로 지정한 로그포맷을 사용하게 된다.

 

 

 

 

 

 

 

 

# Redirect permanent /foo http://www.example.com/bar

 

 

 

 

 

 

 

특정 디렉토리경로로 방문자가 로딩하였을 경우에 지정된 다른 웹사이트경로(URL)로 방향전환을 할 수 있는 지시자이다.

 

 

 

위의 예에서 방문자가 /foo라는 디렉토리를 로딩요청하였을 경우에 http://www.example.com/bar라는 URL로 보여주도록 하는 설정이다.

 

 

 

뒤에 나오는 Alias 지시자와 비슷하지만, Alias는 연결 대상을 파일시스템의 경로를 지정한다.

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

ScriptAlias지시자는 CGI스크립트를 특정한 위치(/usr/local/apache/cgi-bin)에서만 제공하기 위한 설정이다.

 

 

 

일종의 웹서버 보안을 위한 설정에 해당된다.

 

 

 

어떤 위치에서든 CGI를 허용하게 되면 보안에 문제가 있을 수 있으므로 위와 같은 앨리아스를 설정하여 사용자들이 /usr/local/apache/cgi-bin디렉토리내에 존재하는 cgi파일들만 사용할 수 있도록 할 수 있다.

 

 

 

위와 같이 설정되어 있을 때에 일반 사용자들은 다음과 같은 방법으로 /usr/local/apache/cgi-bin에 있는 cgi파일들을 이용할 수 있다.

 

 

 

 

http://www.bible.co.kr/cgi-bin/test.cgi

http://www.linux.co.kr/cgi-bin/board.cgi

http://www.sulinux.net/cgi-bin/list.cgi

 

 

 

위에서 지정한 모든 CGI파일들(test.cgi, board.cgi, list.cgi)의 실제 위치는 /usr/local/apache/cgi-bin에 존재한다.

 

 

 

 

참고로 이와 같은 ScriptAlias설정들은 이 httpd.conf의 메인서버설정부분에서 설정해도 되지만 개별 가상호스트설정부분에서 개별적으로 설정해도 된다.

 

 

 

 

 

 

 

 

 

<IfModule cgid_module>

#

# ScriptSock: On threaded servers, designate the path to the UNIX

# socket used to communicate with the CGI daemon of mod_cgid.

#

#Scriptsock logs/cgisock

</IfModule>

 

 

 

 

 

 

mod_cgid.c모듈이 로드되어있다면 cgid와 통신하기 위한 UNIX소켓을 사용할 수 있다.

 

 

 

 

 

 

 

 

 

DefaultType text/plain

 

 

 

 

 

 

 

mime.types파일에 정의 되어있지 않은 파일형식에 대한 요청을 받았을 때 알 수 없는 문서타입에 대하여 사용할 기본적인 mime 타입을 정해 둔 것이다.

 

 

 

위의 형식대로 지정되어있다면 아파치에서 인식하지 못하는 mime타입에 대한 요청을 받았을 때에는 일반 텍스트문서로 인식하여 로딩하게 된다.

 

 

 

 

 

 

 

 

 

TypesConfig conf/mime.types

 

 

 

 

 

 

 

이 지시자는 mime.types파일을 어디에서 찾을 것인가를 지정한 것이다.

 

 

 

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

 

 

 

위의 경로대로 지정되어 있다면 mime.types파일은 /usr/local/apache/conf 디렉토리내에서 찾게 된다.

 

 

 

 

 

 

 

 

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php .phtml

AddType application/x-httpd-php-source .phps

 

 

 

 

 

 

 

위의 AddTypeMIME설정파일인 mime.types에 정의되어있지 않은 타입을 추가로 설정하고자 할 때에 사용한 것이다.

 

 

 

대부분 기본적인 MIME설정은 mime.types파일에 정의되어 있으므로 추가할 MIME설정은 mime.types파일 편집없이 AddType으로 설정하여 사용한다.

 

 

 

위의 설정에서 php.phtml은 아파치 설정후에 php코드를 인식하도록 하기 위하여 직접 설정한 것이다.

 

 

 

 

 

 

 

 

#AddEncoding x-compress .Z

#AddEncoding x-gzip .gz .tgz

 

 

 

 

 

 

 

AddEncoding은 특정브라우즈에서 받고있는 도중에 정보에 대한 압축해제를 할 수 있도록 한다.

 

 

 

단 모든 웹브라우즈에서 이 기능을 제공하는 것은 아니다.

 

 

 

 

 

 

 

 

 

#AddHandler cgi-script .cgi

 

 

 

 

 

 

 

AddHandler는 파일확장자(.cgi)를 처리기(Handler 위의 cgi-script)에 매핑(연결)시켜주게 된다.

 

 

 

즉 위의 설정은 *.cgi형식의 파일들은 cgi-script라는 handler가 처리하라고 아파치웹서버에게 알려주는 것이다.

 

 

 

이 부분에 대한 설정을 제대로 해주지 않게 되면 CGI가 실행되지 않을 수 있다.

 

 

 

perl과 같은 CGI언어로 개발된 CGI프로그램이 제대로 실행되지않을 경우에 이부분의 주석을 제거한 후 아파치를 재시작하여 CGI를 다시 실행시켜 보아야 한다.

 

 

 

 

 

참고로 위의 CGI스크립트를 정상적으로 적용하려면 Options지시자에 ExecCGI값이 설정되어있어야 한다.

 

 

 

 

 

 

 

 

#AddType text/html .shtml

#AddOutputFilter INCLUDES .shtml

 

 

 

 

 

 

 

SSI(Server Side Include)문서로 인식할 파일확장자를 지정한 것이다.

 

 

 

SSI코드가 들어있는 문서의 확장자를 *.shtml으로 사용할 수 있는 설정이다.

 

 

 

SSI는 시스템의 날짜와 카운터등 CGI프로그램을 하지 않아도 HTML문서에서 단 몇줄로 CGI의 효과를 낼 수 있는 SSI기능을 인식하게끔하는 유용한 도구이다.

 

 

 

즉 이 설정이 유효하게 설정되었을 경우에 SSI로 된 문서는 아파치웹서버에서 먼저 해석된 후에 그 결과를 html문서와 함께 웹브라우즈로 보내지게 된다.

 

 

 

이 설정지시자는 Options지시자에 Includes라는 값이 설정되어 있을 때만 유효하다.

 

 

 

 

다음은 간단한 SSI코드의 예이다.

 

 

 

 

???? 해당문서의 최종수정일을 지정된 위치에 출력하려고 한다.

 

 

 

SSI 코드 : <!--#echo var="LAST_MODIFIED" -->

 

???? 홈페이지 방문자의 IP Address를 표시하려고 한다.

 

 

 

SSI 코드 : <!--#echo var="REMOTE_ADDR" -->

 

???? 지정된 문서를 삽입하려고 한다.

 

 

 

SSI 코드 : <!--#include virtual="sample.html" -->

 

 

 

 

 

 

#MIMEMagicFile conf/magic

 

 

 

 

 

 

 

 

특정파일타입에 대한 컨텐츠로부터 여러가지정보를 사용할 수 있도록 허용한다.

 

 

 

MIMEMagicFile지시자는 이 모듈이 어디에 존재하는가를 지정한 지시자이다.

 

 

 

즉 위 예와 같이 설정되었다면 /usr/local/apache/magic파일을 지정한 것이다.

 

 

 

 

 

 

 

 

 

#

# Customizable error responses come in three flavors:

# 1) plain text 2) local redirects 3) external redirects

#

# Some examples:

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

 

 

 

 

 

 

 

웹문서의 에러발생시 응답을 정의할 수 있는 방법을 3가지 나타내고있다.

 

 

 

 

일반적인 텍스트에러

정의된 에러발생시에 정의된 문자열을 출력하는 방법이다.

 

 

 

 

 

 

 

 

#ErrorDocument 500 "The server made a boo boo."

 

 

 

 

 

 

 

만약 웹서버에서 500에러일 경우에는 “The server made a boo boo.”를 표시해 준다.

 

 

 

이 경우 다른 서버에 있는 페이지를 URL로 지정하여 보여줄 수도 있다.

 

 

 

그리고 ErrorDocument뒤에 오는 에러코드에 대해서는 뒤에서 설명하고 있는 웹문서 에러코드를 참조하기 바란다.

 

 

 

 

지역적인 방향전환정의된 에러발생시에 서버내(로컬서버)의 특정문서를 출력해주는 방법이다.

 

 

 

 

 

 

 

 

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

 

 

 

 

 

 

 

만약 404에러가 발생할 경우에는 missing.html파일을 웹브라우즈로 보여주게 된다.

 

 

 

이 경우 또한 다른 서버에 있는 페이지를 URL로 지정하여 보여줄 수도 있다.

 

 

 

 

외부 방향전환정의된 에러발생시에 외부의 특정 URL에 존재하는 문서를 출력해주는 방법이다.

 

 

 

 

 

 

 

 

#ErrorDocument 402 http://www.example.com/subscription_info.html

 

 

 

 

 

 

 

즉 웹문서 로딩시에 402라는 에러가 발생하였을 경우에는 http://www.example. com/subscription_info.html의 문서를 보여주기 위한 설정이다.

 

 

 

 

 

 

 

 

 

#EnableMMAP off

 

 

 

 

 

 

 

이 지시자는 메모리매핑(Memory-Mapping) 파일을 사용할 것인가를 설정하는 지시자이다.

 

 

 

만약 리눅스커널에서 mmap(메모리매핑)을 지원한다면 아파치가 웹문서를 로딩하기위하여 내부문서를 읽을 때에 파일을 메모리매핑하여 처리한다.

 

 

 

따라서 파일을 읽을 때에 메모리매핑을 하기 때문에 아파치의 성능을 크게 향상시킬 수 있다.

 

 

 

하지만 어떤 경우에는 메모리매핑 자체가 아파치의 안정성을 해치는 경우가 있으며 특히 NFS마운트된 파일시스템을 사용하면서 bus error를 발생시킬 가능성이 있다.

 

 

 

따라서 가능한 이 지시자는 off로 설정하고 사용하지 않는 것이 좋다.

 

 

 

이에 대한 자세한 문서는 다음 URL을 참고하기 바란다.

 

 

 

 

 

http://httpd.apache.org/docs/2.0/mod/core.html

 

 

 

 

 

#EnableSendfile off

 

 

 

 

 

 

 

만약 리눅스 커널에서 sendfile을 지원하면 아파치는 커널sendfile를 사용하여 로딩하고자 하는 파일을 직접 읽지 않을 수 있다.

 

 

 

따라서 sendfile은 아파치의 성능을 크게 향상 시킬 수 있다.

 

 

 

하지만 sendfile을 사용하면 아파치의 안정성을 해칠 수 있으므로 주의해야 한다.

 

 

 

따라서 가능한 sendfile을 사용하지 않도록 이 지시자의 값을 off로 설정해 두는 것이 좋다.

 

 

 

이에 대한 자세한 문서는 다음 URL을 참고하기 바란다.

 

 

 

 

http://httpd.apache.org/docs/2.0/mod/core.html

 

아파치웹서버의 주 설정파일로서 ServerRootServerName, DocumentRoot와 같은 메인설정들을 정의하고 있다.

 

 

 

그리고 파일의 마지막부분에는 extra디렉토리에 존재하는 11개의 설정파일들을 개별적으로 include하여 선택적으로 로딩 할 수 있도록 되어있다.

 

 

 

개별적으로 로딩하는 11개의 용도별 설정파일들을 include하는 내용을 보면 다음과 같다.

 

 

 

 

 

 

 

 

Include conf/extra/httpd-mpm.conf

 

 

 

 

 

 

 

아파치웹서버의 MPM specific에 대한 설정파일을 include하는 설정으로써 이 파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-multilang-errordoc.conf

 

 

 

 

 

콘텐츠협상을 통한 에러문서(Error Document) 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-autoindex.conf

 

 

 

 

 

 

 

디렉토리의 내용을 어떻게 로딩할 것인가에 관한 아파치설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-languages.conf

 

 

 

 

 

다른 언어들을 어떻게 표현할 것인가에 대한 아파치 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-userdir.conf

 

 

 

 

 

 

 

사용자 홈디렉토리에 관한 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-info.conf

 

 

 

 

 

 

 

아파치실행모니터링과 실행상태정보를 설정하는 아파치설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-vhosts.conf

 

 

 

 

 

아파치 가상호스트에 대한 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-manual.conf

 

 

 

 

 

 

 

아파치웹서버의 매뉴얼제공에 대한 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-dav.conf

 

 

 

 

 

 

 

WebDAV에 관한 아파치 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-default.conf

 

 

 

 

 

아파치웹서버의 기본설정사항들이 설정되어있는 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

 

 

 

 

#Include conf/extra/httpd-ssl.conf

 

 

 

 

 

 

 

SSL지원을 위한 아파치 설정파일을 include하는 설정으로써 이파일을 불러서 사용하려면 주석(#)을 제거하면 된다.

 

 

 

 

 

conf/extra/httpd-autoindex.conf

 

 

디렉토리의 내용을 어떻게 로딩할 것인가에 관한 설정을 모아둔 설정파일이다.

 

 

 

자세한 설정파일 내용을 알아보자.

 

 

 

 

 

IndexOptions FancyIndexing HTMLTable VersionSort

 

 

 

 

 

IndexOptions지시자는 디렉토리목록을 표시(리스팅)할 때 어떻게 보여줄 것인가를 결정하는 지시자이다.

 

 

 

Standard는 표준적인 디렉토리를 나타내며, FancyIndexing은 좀 더 예쁜 디렉토리목록을 표시해주도록 한다.

 

 

 

DirectoryIndex지시자에서 지정한 초기파일이 존재하지 않을 경우에 디렉토리 표시를 이쁘게(?) 표시해준다.

 

 

 

 

, 이 지시자의 사용에 있어서 확인해야 할 것은 이 지시자를 사용하여 디렉토리목록이 표시(listing)되려면 해당 디렉토리내에 DirectoryIndex에 지시한 파일들이 전부 존재하지 않아야하고 해당 디렉토리에 Indexes옵션이 있어야만 적용이 된다.

 

 

 

 

그리고 이 다음부터 설명하는 디렉토리 목록표시(리스팅)에 해당하는 지시자들은 IndexOptions지시자에 FancyIndexing이라는 지시자가 있는 상태에서 의미가 있다.

 

 

 

 

 

 

 

 

 

Alias /icons/ "/usr/local/apache/icons/"

 

 

 

 

 

 

 

Alias지시자는 크게 두가지 목적(기능)을 위해 사용한다.

 

 

 

첫번째는 DocumentRoot 밖의(상위의) 문서를 안쪽에서 사용하기 위해서이며 두번째는 긴 이름을 짧게 줄여서 사용하기 위한 것이다.

 

 

 

필요한 만큼의 디렉토리 별칭을 만들어 사용할 수 있다.

 

 

 

사용하는 형식은 다음과 같다.

 

 

 

 

 

Alias /fakename(가상이름)/ /realname(절대경로)/

 

 

 

즉 특정 디렉토리의 경로를 짧게 설정하여 사용할 수 있다는 의미이며 위의 예와 같이 Alias /icons/ “/usr/local/apache/icons/”로 설정하였을 경우에 /usr/local/ apache/icons/ 디렉토리내의 sample.gif 파일을 http://www.sulinux.net/icons/ sample.gif”로 사용할 수 있게 해준다.

 

 

 

 

 

 

 

 

 

<Directory "/usr/local/apache/icons">

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

 

 

 

 

 

 

 

위 설정은 /usr/local/apache/icons/디렉토리에 존재하는 이미지파일들에 대한 접근허용 또는 불허용 설정이다.

 

 

 

Options에 대한 설명과 AllowOverride에 대한 설명은 앞부분에서 이미 했으며 의미 또한 동일하다.

 

 

 

즉 이 디렉토리에 존재하는 이미지 파일들에 대하여 OrderAllow의 설정에 의하여 접근권한을 허용하게 할 수도 있고 허용하지 않을 수도 있다.

 

 

 

 

이 설정 또한 <Directory> ~ <Directory>지시자의 한 종류로서 /usr/local/apache/ icons 디렉토리에 대한 보안 설정을 위한 것이라고 할 수 있다.

 

 

 

/usr/local/ apache/icons디렉토리내의 파일들에 대하여 Options값으로 Indexes, MultiViews를 적용하고 AllowOverride값으로 None을 적용하게 된다.

 

 

 

또한 Order allow,deny 그리고 Allow from all의 설정에 의해 모든 사용자들이 이 디렉토리내의 파일들에 대해 로딩할 수 있기 때문이다.

 

 

 

 

 

 

 

 

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^^

 

 

 

 

 

 

 

이 지시자를 포함하여 “AddIcon*”에 해당하는 모든 지시자들은 디렉토리목록을 표시할 때에 아이콘이미지파일을 파일이름 또는 확장자들에 따라서 어떻게 보여줄 것인가를 나타내는 것이다.

 

 

 

즉 예를들어 위의 설정 가운데 “AddIcon /icons/binary.gif .bin .exe”에 의하여 디렉토리 목록을 표시할 때에 확장자가 .bin 또는 .exe로 끝날 경우에는 /usr/local/apache/icons/binary.gif이미지 파일을 사용하여 표시하게 된다.

 

 

 

 

예를들어 “AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip”설정으로 인하여 확장자가 .Z .z .tgz .gz .zip등으로 끝나는 파일들에 대해서는 /usr/local/apache/icons/ compressed.gif파일을 이용하여 웹브라우즈에 보여주게 된다.

 

 

 

예를 들면 compress.gz 파일의 아이콘과 compress.tar.gz파일의 경우가 이에 해당한다.

 

 

 

 

 

이 지시자는 해당 디렉토리의 “<Directory > ~ </Directory>”지시자의 OptionsIndexes지시자가 있어야하고 DirectoryIndex지시자에 지정된 파일이 모두 없는 상태에서 IndexOptions지시자의 값이 FancyIndexing으로 설정되었을 때에 적용되는 것이다.

 

 

 

 

 

 

 

 

DefaultIcon /icons/unknown.gif

 

 

 

 

 

 

 

위에서 설정한 AddIcon에 해당하는 파일이름이 없을 경우에 즉 위에서 지정한 파일확장자에 속하지 않을 경우에 여기서 지정한 기본아이콘파일 (unknown.gif)로 보여주도록하는 설정이다.

 

 

 

 

 

 

 

 

#AddDescription "GZIP compressed document" .gz

#AddDescription "tar archive" .tar

#AddDescription "GZIP compressed tar archive" .tgz

 

 

 

 

 

 

 

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

 

 

 

이 설정은 IndexOptionsFancyIndexing으로 설정되었을때만 표시되며, 설정형식은 다음과 같다.

 

 

 

 

 

AddDescription "표시할 설명" 파일확장자

 

 

 

다음은 위의 설정을 다음과 같이 했을 경우의 파일설명자에 대한 예를 든 것이다.

 

 

 

 

 

 

 

 

 

AddDescription "GZIP으로 압축된 파일입니다.

 

 

 

” .gz

AddDescription "tar로 압축된 파일입니다.

 

 

 

” .tar

AddDescription "GZIPtar로 압축된 파일입니다.

 

 

 

" .tgz

 

 

 

 

 

 

 

위의 예처럼 gz라는 파일확장자를 가지는 파일에 대해서는 웹브라우즈에서 “GZIP으로 압축된 파일이다.

 

 

 

라는 문구를 보여주게되며, tar라는 파일확장자를 가지는 파일에 대해서는 “tar로 압축된 파일이다.

 

 

 

라는 설명문구를 보여주게되며 마찬가지로 tgz에 대해서는 “GZIPtar로 압축된 파일이다.

 

 

 

라는 문구를 다음과 같이 보여주게 된다.

 

 

 

 

 

 

 

 

ReadmeName README.html

 

 

 

 

 

 

ReadmeName은 디렉토리목록표시 뒤(웹브라우즈 아랫부분, 일종의 꼬릿말)에 붙여서 보여 줄 README파일의 이름을 지정한다.

 

 

 

 

 

 

 

HeaderName HEADER.html

 

 

 

 

 

 

 

HeaderName은 디렉토리목록표시 앞(웹브라우즈 윗부분, 일종의 머리말)에 붙여질 파일의 이름을 지정한다.

 

 

 

HEADER라는 파일을 만들어서 사용할 수 있다.

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

디렉토리목록을 인덱싱할 때 표시할 파일리스트에서 제외할 파일들을 지정한다.

 

 

 

즉 디렉토리 목록에 포함하지 않을 파일을 지정한다.

 

 

 

쉘스타일의 와일드카드(*, ?)가 허용된다.

 

 

 

 

 

conf/extra/httpd-dav.conf

 

 

WebDAV(Distributed authoring and versioning)에 관한 설정 파일이다.

 

 

 

아파치 웹서버에서 DAV를 사용하가 위해서는 mod_dav, mod_dav_fs, mod_dsetenvif, mod_alias 모듈이 필요하다.

 

 

 

 

 

 

 

 

DavLockDB "/usr/local/apache/var/DavLock“

#잠금파일을 설정하는 지시자다.

 

 

 

잠금파일은 아파치에서 설정한 사용자 및

#그룹이 지정한 디렉토리에 쓰기 권한이 있어야 한다.

 

 

 

 

 

Alias /uploads "/usr/local/apache/uploads"

 

<Directory "/usr/local/apache/uploads">

Dav On

# Dav를 활성화 한다.

 

 

 

 

Order Allow,Deny

Allow from all

 

AuthType Digest

# 인증 타입은 Digest로 한다.

 

 

 

 

 

AuthName DAV-upload

# 인증이름은 DAV-upload로 하낟.

 

# htdigest 명령어로 다음과 같이 비밀번호 파일을 생성해야 한다.

 

 

 

 

# htdigest -c "/usr/local/apache/user.passwd" DAV-upload admin

AuthUserFile "/usr/local/apache/user.passwd“

# 비밀번호 파일지정

 

AuthDigestProvider file

# 인증을 파일로 할 것을 명시한다.

 

 

 

 

 

# 읽기는 보편적으로 허용하나, 쓰기는 admin 사용자로 제한한다.

 

 

 

 

<LimitExcept GET OPTIONS>

require user admin

</LimitExcept>

</Directory>

 

 

 

 

 

 

 

 

 

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully

BrowserMatch "MS FrontPage" redirect-carefully

BrowserMatch "^WebDrive" redirect-carefully

BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully

BrowserMatch "^gnome-vfs/1.0" redirect-carefully

BrowserMatch "^XML Spy" redirect-carefully

BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

 

 

 

 

 

 

 

위 설정은 BrowserMatch지시자를 통해 특정 웹브라우저들에 대하여, GET이 아닌 요청에 중 디렉토리의 마지막에 “/”가 붙지 않는 요청을 리다이렉트 하는 것을 방지하는 설정이다

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  125 명