다음 이전 차례

6. APACHE 설정과 고급 기능

이 장에서는 아파치의 여러 가지 설정과 고급 기능에 대해 설명하겠습니다.    httpd.conf 파일이 설정에 관련된 모든 정보를 가지고 있으므로 이 파일의 옵션을 위주로 설명하겠습니다.

6.1 아파치의 구성

아파치를 성공적으로 설치했다면 /usr/local/apache/에 여러 가지 디렉토리가 생성됩니다.    사용자에 따라 이 디렉토리는 다를 수 있습니다.    우선 기본적인 디렉토리만 나열했습니다.

1) 디렉토리 구성

    /bin 디렉토리 - apache 사용 시에 필요한 유틸리티들이 들어 있습니다.
    /cgi - bin 디렉토리 - cgi 스크립트가 있는 곳입니다.
    /conf 디렉토리 - apache 서버의 여러 가지 설정 파일들이 있습니다.(httpd.conf)
    /icons 디렉토리 - apache 서버에 사용되는 아이콘들이 들어 있습니다
    /logs 디렉토리 - apache 서버 사용 시 발생하는 여러가지 log들이 들어 있습니다.

/conf 안에 httpd.conf 파일의 경우 소스에서 다시 copy 해서 사용 가능하므로 나중이라도 설정 잘못으로 apache를
다시 인스톨 하는 일이 없도록 하세요.

2) httpd.conf 구성

그러면 httpd.conf 파일의 내용을 한번 살펴보면서 설정을 설명하겠습니다.    먼저 이 파일은 apache 전반에 관한 설정이 들어 있고 간단히 옵션만 고쳐서 바꿀 수 있습니다.    고치고 나면 당연히 restart 해야 합니다.    서두 부분은 이 파일의 내용을 담고 있습니다.    먼저 이 파일은 총 3가지로 구분할 수 있습니다.

    1. 아파치를 전반적으로 제어하는 부분
    2. 가상호스트에서 처리되지 않는 요청을 모두 처리하는 주 서버 또는 기본 서버의 작동을 제어하는 부분
    3. 다른 IP와 호스트 이름을 처리하는 가상호스트 설정 부분

apache 1.3.4 이전 버전의 경우 3가지 파일(httpd.conf, srm.conf, access.conf)등의 파일이 존재했지만 지금은 httpd.conf 파일로 통합되어진 상태입니다.

6.2 httpd.conf의 관리

아파치 서버의 전반적인 제어(Section 1)

그림. 6-1 서버 타입 설정

#서버 타입 - 서버의 시작을 어떻게 할 것인지 설정하는 부분입니다. 두 가지가 있는 데 대부분 Standalone 방식을 사용합니다. Inetd 방식은 새로운 프로세서를 만들 때마다 설정 파일을 참고 하는 단점이 있고 웹 서버를 restart 안 해도 됩니다.

Standalone 방식의 경우 restart 해줘야 하지만 부하에 보다 안정적 입니다.

그림. 6-2 서버 루트 설정

#서버 루트 - 이 설정은 서버의 설정, 에러, 로그 파일이 기록되는 디렉토리를 말합니다. 위 그림의 /usr/local/apache 가 디폴트 경로 입니다.

그림.6-3 Lockfile 설정

#Lockfile - 이 설정은 아파치 컴파일을 USE_FCNTL_SERIALIZED_ACCEPT 나 USE_FLOCK_SERIALZED_ACCEPT 의 옵션으로 했을 경우 잠금 파일의 경로를 설정할 때 사용합니다.   디폴트는 사용 안함으로 설정되어 있습니다.   로그 디렉토리가 NFS 마운트 된 경로로 되어야 이 값을 바꾸어 줍니다.

그림.6-4 Pidfile 설정

#PidFile - 웹 서버가 시작할 때 Process id num를 기록하는 파일입니다.

그림.6-5 ScoreBoardFile 설정

#ScoreBoardFile - 내부 서버 프로세서의 정보를 저장하는 파일 입니다.   그 경로 명과 같이 적혀져 있습니다.   특정 아키텍처에서 필요할 경우 서로 다른 아파치 웹 서버 데몬이 같은 파일을 공유하지 않아야 합니다.

그림.6-6 ResourceCofig / AccessConfig 설정

#ResourceCofig / AccessConfig - apache 1.3.4 이전의 버전에서는 srm , access conf

파일을 httpd.conf과 함께 읽었지만 이후엔 httpd.conf 파일에 한데 뭉쳐져 관리하기 편해 졌습니다.

서버가 이 파일의 내용을 무시하게 하기 위해서는 "dev/null"(Unix) 또는 "nul"(Win32) 값을 지정 해야 합니다.

그림.6-7 Timeout 설정

#Timeout - 클라이언트가 서버에 요청한 정보를 받을 때 소요 되는 시간을 정해 줍니다.

디폴트는 300으로 설정되어져 있고 초단위로 설정을 합니다. 서버 성능에 따라 적당한 값을 적어 주면 효율적 입니다.

그림. 6-8 KeepAlive 설정

#KeepAlive - 디폴트 값이 on으로 되어 있습니다.    그 이유는 성능저하 때문인데 자식 프로세서가 한가지 일만 처리하고 죽는 것이 아니라 다음의 일도 처리함으로써 성능 향상을 꾀하는 것입니다.

그림. 6-9 MaxKeepAliveTimeout 설정

#MaxKeepAliveTimeout - KeepAlive가 설정되어 있을 때, 클라이언트의 요청을 몇 번 이나 처리하고 다시 처음 상태로 돌아 가는지를 설정 합니다. 만약 이 설정이 "0"일 경우 클라이언트가 접속을 끊을 때까지 계속 연결 상태로 있습니다.

(대부분의 경우 높은 성능 향상을 위해 높은 값을 적어 줍니다.)

그림. 6-10 KeepAliveTimeout 설정

#KeepAliveTimeout - KeepAlive 가 설정되어 있을 경우 클라이언트의 요청이 정해진 초안에 없을 경우 접속을 끊습니다.

여러분들의 서버에 맞게 초를 바꾸어 주면 됩니다.

그림. 9-11 MinSpareServer , MaxSpareServer 설정

#MinSpareServer , MaxSpareServer - 서버 풀을 설정하는 부분입니다. 여기 설정된 디폴트 값은 대부분의 서버에 적합한 상태입니다.

즉, 클라이언트의 요청이 많은 사이트라면 적당히 이 값들을 증가 또는 감소해서 사용해야 합니다.    아파치는 최소 값과 최대 값을 정해 줌으로써 클라이언트의 요청이 많은 경우든 작은 경우든 쉽게 프로세서를 늘리고 줄일 수 있도록 하는 것입니다.    즉, 아파치는 클라이언트의 요청이 적을 경우 또는 최소 값 보다 프로세서가 적을 경우에 자동으로 최소 여유 서버의 개수를 맞추도록 노력 합니다.    최대 값보다 프로세서가 많을 경우라면 자동적으로 최대 여유 서버의 개수에 맞추어 줍니다.

그림. 6-12 StartServer 설정

#StartServer - 아피치 서버를 실행 할 때 같이 생성될 여분의 프로세서의 개수를 정합니다.

디폴트 값은 5 입니다.(6개 생성되어짐)

그림. 6-13 MaxClients 설정

#MaxClients - 동시에 아파치 서버에 접속할 수 있는 클라이언트의 개수를 설정 합니다.

이 값을 늘리거나 줄일 경우 MinSpareServer , MaxSpareServer ,StartServer 의 값도 조정 해 주어야 합니다.    즉, 최대값을 넘어설 嚥 클라이언트의 요청은 앞의 요청이 끝날 때까지 대기 상태로 있어야 합니다.    이 설정은 아파치 서버가 많은 자원을 낭비해 서버 부하가 생기는 것을 막기 위해 사용됩니다.

그림. 6-14 MaxRequestsChild 설정

#MaxRequestsChild - 각각의 자식 프로세서가 죽기 전까지 처리할 수 있는 요청 수를 설정 합니다.    대부분의 시스템에서는 하나의 프로세서가 오랫동안 사용되면 메모리 또는 자원 누출 현상이 발생 할 수 있으므로 이 프로세서는 자동으로 제거 됩니다.    하지만 솔라리스 운영체제의 경우 이 설정이 필요합니다.

그림. 6-15 Listen 설정

#Listen - 아피치를 특정IP 또는 포트와 결합 시킬 경우 사용 합니다.

<VirtualHost> 지시자 또한 참고 하세요.

그림. 6-16 BindAddress 설정

#BindAddress - 이 옵션을 사용해서 가상호스트를 지원할 수 있습니다. 옵션에는 ‘*’ ‘IP address’ ‘인터넷 도메인 이름’을 사용할 수 있습니다.

<VirtualHost>과 Listen 지시자도 참고 하세요.

가상호스트에 관한 자세한 사항은 http://kldp.org로 가시면 한글로 작성된 많은 문서들을 참고하실 수 있습니다.

그림. 6-17 Dynamic Shared Object (DSO) 설정

Dynamic Shared Object (DSO) - DSO(동적 공유 객체)를 사용 하기 위해서 모듈을 지시하는 설정입니다. DSO의 작동 방식을 보려면 아파치 1.3 배포판의 README.DSO 파일을 참고 하기 바랍니다. 여러분들의 httpd 바이너리에 내장된 모듈 목록을 확인하려면 "http -l" 을 실행하면 볼 수 있습니다.

모듈 적재의 순서는 중요 사항이므로 아무렇게나 순서를 바꾸면 안됩니다.

그림. 6-18 ExtendedStatus 설정

#ExtendedStatus - "server-status"가 호출 되었을 때 아파" 자세한 서버 상태 정보를 만들 것인지 여부를 설정합니다.

Off일 경우 기본적인 사항의 정보만 생성합니다.

아파치의 주 서버 설정(Section 2)

가상호스트에서 처리되지 않는 요청을 모두 처리하는 주 서버 또는 기본 서버의 작동을 제어하는 부분입니다.

그림. 6-19 Port 설정

#Port - 독립형 서버가 대기하는 포트를 설정합니다. 포트 번호가 1023번 보다 낮을 경우 처음 root 권한으로 httpd가 실행되어야 합니다.

기본적으로 설정된 포트 외에 다른 포트를 설정함으로써 여러분들도 httpd를 운영할 수 있습니다.

<TIP>----------------------------------------------------------------------------

유동 ip로 공짜 도메인 사용하기

여러분들 대부분의 경우가 케이블 모뎀이나 adsl을 사용한다고 가정 하겠습니다.    일단 바뀌는 유동 ip에 공짜로 도메인을 주는 곳을 보면 http://www.dyndns.org/- 여기의 경우 일단 가입을 한 후 24시간 안에 해당 id의 패스워드를 메일로 받습니다. 그리고 그 패스워드로 접속한 다음 원하는 패스워드로 바꾸어 줘야 합니다.    고정 ip의 경우도 도메인을 제공하고 여러 가지 옵션들이 다양하게 있습니다.    클라이언트를 받아 서버의 가동과 동시에 바뀌는 ip에 따른 도메인 설정을 잡아 줄 수도 있습니다.     http://xdomain.neti.org/- 여기는 한국 사이트이고 접속이 자주 끊기는 현상이 있습니다.    하지만 공짜니 불만을 가질 수는 없겠죠? 일단 가입 즉시 사용 가능하고, 친절히 관리자가 게시판에 답도 해줍니다.

----------------------------------------------------------------------------------------------------

그림. 6-20 User , Group 설정

#User , Group - 독립형 서버에서 사용되며, 일반적으로 서버에서 작업 프로세서는 nobody로 설정을 해 줍니다.

   즉, 제일 권한이 없는 것으로 설정을 합니다.    보안 때문에 이렇게 설정을 하는 것이고, 만약 nobody로 설정 되어진 상태라면 telnet으로의 접근 또한 막아야 됩니다.    SCO(ODT 3)의 경우 User nouser , Group nogroup로 설정해 줍니다.

그림. 6-21 ServerAdmin 설정

#ServerAdmin - 서버에 문제가 생겼을 경우 메일을 보낼 주소를 적어 주는 곳입니다.

이 주소는 에러 문서와 같이 서버가 생성하는 페이지에 나타납니다.

그림. 6-22 ServerName 설정

#ServerName - 만약 여러분들이 등록된 DNS를 가지고 있다면 그것을 적어 주면 됩니다.

만약 클라이언트에 보낼 서버 이름이 다를 경우 호스트의 실제 이름이 아닌 WWW를 사용하게 할 수도 있습니다.(IP를 입력해도 됩니다.)    만일 DNS가 존재하지 않는 것이라면 개인 홈페이지 서비스에도 영향을 줍니다. 그러한 이유 때문에 이 설정은 유의해야 됩니다.

그림. 6-23 DocumentRoot 설정

#DocumentRoot - 기본적인 html 또는 php 등등의 관련 문서의 기본 디렉토리를 설정 합니다.

(심볼릭 링크 또는 앨리어스를 사용해 다른 위치를 적어 줄 수도 있습니다.)

<TIP>----------------------------------------------------------------------------

각 디렉토리별 사용자 인증 설정하기

다음에 설명할 디렉토리 설정과 관련되어 이 부분을 추가 해 주면 됩니다.

    AuthType Basic                                  - 사용자 인증 방법
    AuthName cry                                    - 인증할 사용자명
    AuthUserFile /usr/local/httpd/htdocs/.htpasswd    - 패스워드 파일의 위치
    AuthGroupFile /dev/null         - 사용 그룹을 표시할 파일의 경로

패스워드 파일을 만들려면 아래와 같이 합니다.

  /usr/local/apache/bin/htpasswd 파일을 사용하는 방법과 직접 작성하는 방법이 있습니다.
  bin#.htpasswd -c 패스워드파일명 유저명 
  위와 같이 실행하면 새로운 패스워드 입력란이 나오고 거기에 패스워드를 입력하면 됩니다.
  그리고 생성된 파일을 인증할 디렉토리로 옮기면 됩니다.

----------------------------------------------------------------------------------------------------

그림. 6-24 Directory 옵션 설정

#Directory 옵션 - 각각의 디렉토리에 관한 권한 등의 여러 가지 설정을 하는 곳입니다.

<Directory "디렉토리 path">   </Directory>로 설정합니다.

여기에는 여러 가지 옵션이 주어지는데 차례로 보겠습니다.

옵션의 사용

    Option 옵션명 옵션명 … 입니다.

옵션 종류

그림. 6-25 UserDir 설정

#UserDir - 개인 홈 페이지 서비스를 위한 개인 홈페이지 디렉토리 설정 부분입니다.

즉, 개인의 디렉토리에 public_html 디렉토리를 만들면 홈페이지 서비스를 받을 수 있습니다.    Ex>http://skycry.ath.cx/ userid    위의 디폴트 디렉토리 말고 다른 디렉토리를 추가 함으로서 여러 개의 디렉토리 서비스를 할 수 있습니다.

그림. 6-26 UserDir 설정

#UserDir 옵션 - 개인 홈페이지 디렉토리에 대한 접근 권한 등을 설정 합니다.

<Limit>   </Limit> 로 각각의 접근을 제어 할 수도 있습니다. 옵션들은 앞 부분에서 설명한 대로 하면 됩니다.    물론 사용자 인증도 할 수 있습니다.

그림. 6-27 DirectoryIndex 설정

#DirectoryIndex - 브라우저가 아파치 서버로 처음 접근 했을 때 보여줄 문서를 설정합니다.

   한 개 이상 나열이 가능하고, 앞에 설명한 디렉토리 설정에서 Option indexes로 되어 있고, DirectoryIndex 지시자에 표시한 파일이 디렉토리에 없을 경우 해당 디렉토리와 파일들은 목록화 되어 브라우저에 나타납니다.

그림. 6-28 AccessFileName 설정

#AccessFileName - 각각의 디렉토리의 접근을 제어하는 정보를 가진 파일 이름 입니다.

   즉, 이 파일을 제어 하려는 디렉토리에 넣어 사용 합니다. 앞의 디렉토리 지시자와 연관하여 참고 하세요.

그림. 6-29 .htaccess 설정

#.htaccess 파일에의 접근 - <Files 파일명>   </Files>로 설정을 하며, 사용 되는 옵션은앞에서 설명한 것과 같습니다.

   그리고 파일명을 .htaccess 가 아닌 다른 이름으로 앞의 AccessFileName에서 바꾸었다면 그 이름을 적어 줘야 됩니다.

그림. 6-30 CacheNegotiatedDocs 설정

#CacheNegotiatedDocs - 아파" 기본적으로 협상된 문서에 대해서는 <Pragma: no-cache> 내용을 보냅니다.

즉, 프락시 서버들이 문서를 캐쉬하지 못하게 요청 합니다.    # 를 제거하고 옵션을 실행 하면 모든 프락시가 문서를 캐쉬할 수 있게 합니다.

그림. 6-31 UseCanonicalName 설정

#UseCanonicalName - 아파치 1.3 버전에서 새롭게 등장한 기능이고, 이 옵션이 켜져 있을 경우

자기 참조 URL(응답이 오는 서버를 다시 가리키는 URL)을 만들 필요가 있을 때마다 공식적인 이름을 만들기 위해 ServerName와 Port를 사용 합니다.    off 일 경우는 아파치는 가능할 경우 클라이언트가 제공하는 hostname:port를 사용 합니다.    이것은 또한 CGI 스크립트의 SERVER_NAME와 SERVER_PORT에도 영향을 줍니다.

그림. 6-32 TypeConfig 설정

#TypeConfig - mime.type 파일의 위치를 설정합니다.

그림. 6-33 DefaultType 설정

#DefaultType - 서버에서 사용되는 문서중 MIME 타입으로 알 수 없는 문서에 대해 적용할 기본 MIME 타입을 설정합니다.

디폴트 값은 text/plain 이며 이 값은 주로 서버에 문서 파일이 많을 경우에 사용 합니다. 만일 바이너리나 실행 파일이 많을 경우라면 이 옵션은 application/octet-stream으로 적어 주면 됩니다.    (웹 브라우저가 실행 파일 등을 텍스트 문서로 착각하고 브라우저 상에 표시하지 않기 위함 입니다.)

그림. 6-34 mod_mine_magic 설정

#mod_mine_magic - mod_mine_magic 모듈을 사용할 경우 해당 파일의 내용으로 파일 타입 힌트를 얻는 역할을 합니다.

이것을 사용하기 위해서는 해당 모듈을 탑재 해야 합니다.    <IfModule>   </IfModule> 지시자는 이 모듈이 있을 때 가능합니다.

그림. 6-35 HostnameLookups 설정

#HostnameLookups - 아파치는 클라이언트의 요청을 받아 들이면서 IP를 확인하고 확인한 주소를 DNS 서버에 다시 의뢰 하는 작업을 하기 때문에 상당한 시간을 요하게 됩니다. 디폴트 값인 off로 두고 사용하길 권장 합니다.

그림. 9-36 ErrorLog 설정

#ErrorLog - 에러를 기록할 파일의 위치를 적어 줍니다. <VirtualHost> 지시자에서 ErrorLog 설정을 하지 않았다면 여기서의 설정을을 따릅니다.    로그 파일의 경우는 계속 용량이 증가하기 때문에 수시로 용량을 줄여야 합니다.

그림. 6-37 LogLevel 설정

#LogLevel - 로그메세지의 크기를 제어 하는 부분 입니다.

옵션에는 debug , info , notice , warn , error , crit ,alert , emerg 등이 있습니다.

그림. 6-38 LogFormat 설정

#LogFormat - CustomLog 지시자에서 사용할 별명을 정의 합니다.

    %h - 호스트명
    %l - 리모트 로그 이름
    %u - 사용자 인증에 사용된 유저명
    %t - 시간
    %r - 요청한 내용의 첫번째 줄
    %s - 서버 상태
    %b - 전송량(헤더 포함)
    %{헤더} - 요구된 헤더 내용
    %U - 요구한 URL

그림. 6-39 CustomLog 설정

#CustomLog - access_log 파일의 위치를 설정 합니다. <VirtualHost> 지시자에서 이 설정 부분이 없을 경우 여기서 설정한 위치로 모두 저장됩니다.

가상 호스트별로 따로 접근 로그 파일을 만들고 싶으면 이 설정을 각각의 <VirtualHost> 지시자 안에 넣어 줘야 합니다.

그림. 6-40 agent_log , referrer_log 설정

#agent_log , referrer_log - 만약 여러분들이 agent_log , referrer_log 파일을 생성 하고자 할 경우 #를 제거합니다.

그림. 6-41 single logfile 설정

#single logfile - 만약 여러분들이 access , agent , referrer 정보를 하나의 파일에 모두 저장 하기를 원한다면 combined 옵션을 이용 합니다.

그림. 6-42 ServerSignature 설정

#ServerSignature - 아파치 서버가 생성하는 페이지(에러문서 , FTP 디렉토리 list , mod_status , mod_info output , CGI 생성문서 제외)에 서버 버전과 가상 호스트 이름을 포함하는 행을 넣는 것을 설정합니다.

옵션에는 On | Off | Email 등이 있고 Email의 경우 ServerAdmin으로의 mailto: 링크도 포함 됩니다.

그림. 6-43 Alias 설정

#Alias - 별칭을 설정하는 부분 입니다.

별칭의 설정은 Alias /별칭/ "path" 하면 됩니다.

   별칭 사용 시에 별칭 다음에 "/"를 적어주면 별칭을 표현할 때 /별칭/ 이렇게 표현해야 됩니다.    디렉토리 설정은 앞에서 사용한 옵션을 사용하면 됩니다.    별칭은 하나 이상 여러 개 만들어 사용 가능하기 때문에 필요한 만큼 만들어 사용하면 됩니다.    물론, 주의 할 부분은 별칭 다음의 "/"를 적어 줬느냐 하는 것입니다.    서버가 URL에 "/"이 있어야 처리하기 때문입니다.

그림. 6-44 ScriptAlias 설정

#ScriptAlias - 서버 스크립트를 포함한 디렉토리를 제어하는 설정 입니다.

Alias와 설정 하는 부분은 같지만 이 설정은 가리키는 디렉토리 안의 문서를 실행하는 프로그램으로 인식하여 실행하게 됩니다.

그림. 6-45 ScriptAlias 디렉토리 설정

위 그림의 디렉토리 설정 path 부분은 ScriptAlias 로 별칭 처리된 실제 CGI 디렉토리로 설정 해야 됩니다.

그림. 6-46 Redirect 설정

#Redirect - 서버에 존재하지 않는 문서로 접근이 올 경우 현재 존재하는 문서로의 위치를 바꿔 주는 설정 입니다.

즉, 옛날에 사용하던 URL로 접속하는 사용자를 위해 새로운 URL로 이동하게 해주는 것입니다.    사용 방법은 "Redirect 옛날URL 새로운URL" 하면 됩니다.

그림. 6-47 IndexOptions 설정

#IndexOptions - DirectoryIndex 지시자에서 표시한 파일이 존재하지 않을 경우 디렉토리 와 파일들의 목록을 보여 줄 때 디렉토리와 파일의 속성에 따른 아이콘을 사용할지 여부를 설정 합니다.

그림. 6-48 AddIcon 설정

#AddIcon - IndexOptions에서 FancyIndexing로 설정 되어 있을 경우 사용 되며 각각의 확장자에 따른 아이콘의 모양을 정해 줍니다.

그림. 6-49 DefaultIcon 설정

#DefaultIcon - AddIcon에서 설정 되지 않은 기본 아이콘을 설정 합니다.

디폴트 아이콘은 unknown.gif 입니다.

그림. 6-50 AddDescription 설정

#AddDescription - 이 설정은 서버 자동 생성 인덱스 파일의 뒤에 간단한 설명을 추가할 때 사용 합니다. (FancyIndexing 설정 일 때 가능합니다.)

방법은 AddDescription "설명" 파일명

그림. 6-51 ReadmeName , HeaderName 설정

#ReadmeName , HeaderName - ReadmeName은 서버가 디렉토리 목록 뒤에 붙여 넣을 README 파일의 이름을 설정하며, HeaderName은 디렉토리 인덱스 앞에 내용을 넣을 파일의 이름을 설정합니다.

   서버는 처음 name.html 파일 찾고 존재 하면 그 내용을 포함합니다.    만약 파일이 존재하지 않는다면 name.txt를 찾고 txt 내용으로 포함 합니다.

그림. 6-52 IndexIgnore 설정

#IndexIgnore - DirectoryIndexing에서 목록에서 제외할 파일명을 설정 합니다.

쉘 스타일과 와일드 카드 사용이 가능 합니다.

그림. 6-53 AddEncoding 설정

#AddEncoding - 특정 브라우저(Mosaic/x 2.1+)가 자료를 받으면서 압축을 풀 수 있도록 해 줍니다.

   이것은 모든 브라우저가 가능 한 것은 아닙니다.    (FancyIndexing의 Add 지시자와 지금부터 나열하는 Add 지시자와는 관련이 없습니다.)

그림. 6-54 AddLanguage 설정

#AddLanguage - 문서의 언어를 표시 합니다. 즉, 내용 협상 과정을 통해 브라우저가 이해하는 언어의 문서를 제공할 수 있습니다.

   폴란드어의 경우 펄과 구분 하기 위해 pl .po로 표기 합니다.

그림. 6-55 LanguagePriority 설정

#LanguagePriority - 문서 문장 을 읽어 들이는 동안 여러 가지 언어가 존재 할 경우 우선되는 언어를 나열해 줍니다.

   설정은 내림차순으로 나열 합니다.

그림. 6-56 AddType 설정

#AddType - php 확장자를 사용 하기 위해서는 꼭 필요한 설정 부분 입니다.

즉, mime.types의 수정 없이 mime를 설정 가능하게 해줍니다.    아파치 1.3.12일 경우는 php를 설정하는 부분이 따로 나와 있습니다. 그 이전 버전일 경우 위와 같이 설정을 하면 됩니다.    해당 확장자에 대해 특정 타입으로 실행 되게 하는 것입니다, 여러분들의 목적은 php를 사용 하는 것이므로 알맞게 고치면 됩니다.    (php3 .htm) 이 부분은 .htm 확장자를 php3타입으로 실행 한다는 말입니다.

 
    AddType application/x-httpd -php .php      -   .php 확장자를 php타입으로 실행 
    AddType application/x-httpd -php .html      -   .html 확장자를 php타입으로 실행
    AddType application/x-httpd -php .inc       -   .inc 확장자를 php타입으로 실행
    AddType application/x-httpd -php-source .phps - .phps 확장자들은 php 소스를 보게합니다.

그림. 6-57 AddHandler 설정

#AddHandler - 특정 파일 확장자나 처리기에 연결하거나 특정 파일 타입에 특정 동작 연결을 설정 합니다.

서버 안에 있거나 또는 action 명령을 사용해서 추가 가능 합니다.

    CGI 스크립트를 사용  
        AddHandler cgi-script .cgi

    서버 처리 HTML 파일 사용 
        AddType text/html .shtml
        AddHandler server-parsed .shtml

    아파치의 send-asis HTTP 파일 기능 사용
        AddHandler send-as-is asis

    서버 처리 imap 파일을 사용  
        AddHandler imap-file map

    Type map을 사용 
        AddHandler type-map var

그림. 6-58 Action 설정

#Action - 매칭되는 파일이 불려질 때마다 해당 미디어 타입에 맞는 스크립트를 실행할 수 있습니다.

이 설정은 자주 사용되는 CGI 파일 프로세서에 대해 반복적으로 URL을 사용하지 않아도 됩니다.

그림. 6-59 MetaDir , MetaSuffix 설정

#MetaDir , MetaSuffix - MetaDir는 아파" 메타 정보 파일을 찾을 디렉토리 이름 입니다.

이 파일에는 문서를 보낼 때 추가할 추가 HTTP 헤더 정보가 있습니다.    MetaSuffix는 메타 정보를 가지고 있는 파일의 접미어를 설정 합니다.

그림. 6-60 Customizable error response 설정

#Customizable error response - 존재하지 않는 페이지를 요청 받을 경우 또는 해당 디렉토리의 퍼미션이 없을 경우 보여 주는 에러 메시지 설정 입니다.

관리자 임의로 다음 3가지 중 선택 해서 출력해 줄 수 있습니다.

    1)  plain text - 보통 텍스트 화면
    2)  local redirects - 내부 Url로 방향 전환을 합니다.
    3)  external redirects - 외부 Url로 방향 전환을 합니다.

일반적으로 원래 요청과 관계된 환경 변수의 대부분이 스크립트에 전달되지 못합니다.

그림. 6-61 BrowserMatch 설정

#BrowserMatch - HTTP 응답 방식을 수정합니다.

첫번째 지시자는 Netscape 2.x 와 유사한 브라우저에 대해 KeepAlive 기능을 사용하지 못하게 하는 설정입니다.    (해당 브라우저는 KeepAlive기능 구현에 문제점이 있습니다.)    두번째 지시자는 HTTP/1.1을 잘못 구현하며 301, 302(redirect) 응답에 대해 KeepAlive을 제대로 지원 못하는 MS Explorer 4.0b2를 위한 설정입니다.

그림. 6-62 BrowserMatch 설정

# BrowserMatch - HTTP/1.1 응답도 제대로 처리 하지 못해 HTTP/1.1 spec를 위반하는 브라우저에 대해 HTTP/1.1 응답을 하지 않게 하는 설정입니다.

그림. 6-63 server status , server info reports 설정

#server status , server info reports - 서버 상태 정보를 허용할 servername을 적어 줍니다.

server status 방법은 http://servername /server-status 입니다.

여기서 servername을 적절히 바꾸어 사용하면 됩니다.

server info 방법은

http://servername /server-info 입니다 (mod_info.c 가 로드되어 있어야 합니다.)

그림. 6-64 버그 이용 방지 설정

#버그 이용 방지 - 이전 1.1버전에서 있던 버그를 악용 하려는 사람이 있는데, #를 제거하면 버그를 이용한 공격이 있을 때 phf.apache.org상의 기록 스크립터로 방향 전환을 시키게 합니다.    또 다른 방법은 직접 support/php_abuse_log.cgi 스크립트를 이용해 여러분 자신이 저장하는 것입니다.

그림. 6-65 Proxy Server 설정

#Proxy Server - 프락시 서버 사용을 설정하는 부분입니다.

프락시 서버 모듈을 포함 했을 경우 #를 제거하면 프락시 서버 사용이 가능 합니다.

그림. 6-66 ProxyVia 설정

#ProxyVia - HTTP/1.1 <Via:> 헤더를 처리할지 여부를 설정하는 부분입니다.

옵션에는 Off | On | Full | Block 등이 있으며 Full은 서버 버전을 포함 하며, Block는 나가는 모든 자료에 <Via:>를 제거 합니다.

그림. 6-67 cache 설정

#cache - 캐쉬 기능을 enable 하기 위해서는 #을 제거 합니다.

(CacheRoot가 없으면 캐쉬하지 않습니다.)

아파치의 가상 호스트 설정(section 3)

다른 IP와 호스트 이름을 처리하는 가상호스트 설정 부분

그림. 6-68 NameVirtualHost 설정

여러분들이 웹 서버에 다수의 도메인/호스트이름을 관리하길 원한다면 해당하는 호스트를 VirtualHost 지시자에 포함 시켜야 합니다.

#NameVirtualHost - 이름 기반의 가상 호스트를 사용하려면 적어도 하나의 IP(port 번호)를 정의 해야 합니다.

그림. 6-69 VirtualHost 설정

# VirtualHost - <VirtualHost 호스트 명>   < /VirtualHost > 이렇게 설정 하며 보다 자세한 가상 호스트에 관한 자료는 http://www.apache.org/http://kldp.org 에서 찾을 수 있습니다.

다음 장에서는 PHP의 기본 문법과 프로그램 작성 방법을 설명하겠습니다.


다음 이전 차례