httpd.conf의 이해. 옵션별 설명

#####################################################################

  #

  # 다음 한글화된 설정 파일은 Apache 1.3.12을 위한 것입니다.

  #

  # 번역         : 이 만 용 <yong@linuxkorea.co.kr>

  # 수정 및 추가 : 김 정 균 <admin at oops.org>

  #

  # 번역 상의 오류나 더 매끄러운 번역을 위한 제안 사항은 언제나

  # 환영합니다.

  #

  #####################################################################

  #

  # 베테랑 아파치 서버 관리자들에게 보내는 메시지)

  # ———————————————–

  #

  # 아파치 설정 파일은 전통적으로 httpd.conf, srm.conf, access.conf

  # 이렇게 3 개로 구성되어 있다.  그러나 내부적으로는 3 개의 파일에

  # 대한 구별을 하지 않고 순차적으로 읽어나갈 뿐이다.

  #

  # 3 개의 파일 내용은 관례적인 것일 뿐이다.  아파치 신 버전부터는

  # 모든 설정 내용이 하나의 거대한 파일 httpd.conf에 들어 있고 나머지

  # 두 파일은 빈 파일로 제공되고 있다.

  #

  # 이런 사실을 알아두기 바란다.

  #

  #####################################################################

  #

  # 팁하나!)

  #

  # 1) 문제가 발생했을 때에는 httpd.conf (srm.conf, access.conf) 설정

  #    파일의 문법을 제대로 지켰는지 먼저 점검하고 다른 아파치 관리자

  #    들에게 도움을 요청하는 것이 좋습니다.

  #

  #    /usr/sbin/httpd 명령에 -t 옵션을 주면 문법만 점검합니다.

  #    기타 다른 옵션에 대하여 알고 싶을 때에는 -h 옵션을 사용하십시오.

  #

  #    예1) 문제가 없는 경우

  #

  #    # /usr/sbin/httpd -t

  #    Syntax OK

  #

  #    예2) 설정에 실수가 있는 경우

  #

  #    #/usr/sbin/httpd -t

  #    Syntax error on line 91 of /etc/httpd/conf/httpd.conf:

  #    ServerType must be either ‘inetd’ or ‘standalone’

  #

  #####################################################################

  #

  # Rob McCool 씨의 NCSA 서버 설정 파일에 기초한 것임.

  #

  # 이 파일은 아파치(Apache) 서버 주 설정 파일이다.  이 파일에 들어있는

  # 설정 지시자(directive)를 통해 서버의 작동 방식을 지시한다.

  # 각 지시자에 대한 자세한 정보를 원하면 http://www.apache.org/docs를

  # 참고하라.

  #

  # 정확한 이해 없이 대충 읽어나가는 일이 없도록 하자. 여기에 적은 

  # 내용을 그대로 여러분의 상황에 적용시키려 하지 말라.  다음 내용은 

  # 실제 지시 내용을 위한 힌트라고 생각하자.  내용에 대하여 의문이 

  # 있을 때에는 온라인 문서를 참조하라.  이 사실에 대하여 지금 여러분

  # 에게 충분히 경고해두었음을 밝히는 바이다.

  #

  # 아파치 서버는 이 파일을 읽고 난 후, /home/httpd/conf/srm.conf 

  # 파일을 처리하고 그 다음 /home/httpd/conf/access.conf 파일을 

  # 읽는다. 지금 현재 이 설정 파일에서 ResourceConfig, AccessConfig 

  # 지시자를 사용하여 설정 파일 이름을 바꾸면, 변경된 이름의 설정 파일을 

  # 읽는다. (여기서 /home/httpd 부분은 아파치 서버의 기본 디렉토리로

  # 대체하여 생각하면 된다.  예를 들어 여러분이 직접 아파치를 컴파일하여

  # 설치하는 경우에는 일반적으로 /usr/local/apache 가 된다.)

  #

  # 지시자는 3 개의 기본적인 섹션으로 묶여 있다:

  #  1. 아파치 서버 프로세스의 전반적인 작동을 제어하는 지시자

  #     (‘global environment, 전체 환경’)

  #  2. 가상 호스트에 의해 처리되지 않는 요청을 모두 처리하는 주 서버 

  #     또는 기본 서버의 작동을 제어하는 지시자.

  #     이 지시자 내용은 모든 가상 호스트의 기본값이기도 하다.

  #  3. 다른 IP 주소 또는 다른 호스트 이름에 대한 요청을 처리할 가상

  #     호스트 설정

  #

  # 설정 파일과 로그 파일 이름 : 만약 파일 이름이 “/”로 (또는 Win32 

  # 버전의 경우 “드라이브명:/” ) 시작하면 주어진 파일 이름 그대로를 

  # 사용한다. 그러나 “/” 로 시작하지 않을 때에는 ServerRoot 의 값이 

  # 그 앞에 추가된다. 따라서 “logs/foo.log”는 ServerRoot 값 (예를

  # 들어 “/usr/local/apache”)이 앞에 추가되어 서버는 최종적으로 

  # “/usr/local/apache/logs/foo.log”를 사용한다.

  #####################################################################

 
 

 
 

  ### 섹션 1 : 전체 환경 (Global Environment)

  #

  # 이 섹션에 적힌 지시자는 예를 들어 아파치 서버가 처리할 수 있는 

  # 동시 요청의 갯수라든지 다른 설정 파일의 이름 등 아파치 서버의

  # 전반적인 작동에 영향을 미친다.

  #

 
 

  #

  # 서버 유형(ServerType)은 inetd 또는 standalone 둘 중 하나이다.

  # inetd 방식은 유닉스 플랫폼에서만 지원된다.

  #

  ServerType standalone

 
 

  Server의 Type을 지정하는 것으로, standalone은 httpd 데몬 프로세스가

  사용자의 요청을 처리하는 것이고, inetd는 inetd 데몬프로세스가 처리하게 

  하는것이다. web demon처럼 사용자의 query가 많을 때는 standalone이 더 

  효율적인 방법이다.

 
 

  #

  # 서버 루트(ServerRoot) : 서버의 설정 파일, 에러 파일, 로그 파일이

  # 기록되는 디렉토리의 최상위 경로명.

  #

  # 주의! 만약 서버 루트를 NFS (또는 기타 네트웍 파일 시스템) 마운트된

  # 곳에 두고자 한다면 LockFile 문서를 꼭 읽어보아야 한다.

  # (<URL:http://www.apache.org/docs/mod/core.html  #lockfile>);

  # 문서를 읽고 나면 앞으로 닥칠 지 모르는 몇 가지 문제점을 피할 수 

  # 있다.

  # 디렉토리 경로 뒤에 슬래쉬(/) 문자를 쓰지 않는다!!!

  #

  ServerRoot “/etc/httpd”

 
 

  Apache 설정 file에서 사용될 경로중 상대 경로의 기준을 위해서 정해 

  진다. Web의 Root directory와는 상관이 없다. DSO의 지원으로 인하여 

  ServerRoot의 상대 경로를 주의있게 설정해야 한다. Alzza 에서는 DSO 

  module들의 절대 경로가 /etc/httpd/modules 가 되므로 아래의 DSO 

  쪽의 상대 경로와 틀어지지 않게 조심해야 한다.

 
 

  #

  # LockFile 지시자는 아파치를 USE_FCNTL_SERIALIZED_ACCEPT 또는

  # USE_FLOCK_SERIALIZED_ACCEPT 옵션을 주고 컴파일한 경우, 잠금

  # 파일을 경로를 지정할 때 사용한다.  이 지시자 값은 일반적으로 기본

  # 값이 되도록 놔둔다.  이 값을 바꾸는 경우는 로그 디렉토리가 NFS 

  # 마운트된 곳에 있는 경우로서 잠금 파일은 항상 네트웍 파일 시스템이

  # 아닌 로컬 디스크에 저장되어야 하기 때문이다.  주 서버 프로세서의 

  # PID 값이 자동으로 파일 이름 뒤에 붙는다.

  #

  #LockFile logs/accept.lock

 
 

  #

  # PidFile: 서버가 시동될 때 자신의 프로세스 고유 번호를 기록할 파일

  #

  PidFile /var/run/httpd.pid

 
 

  #

  # ScoreBoardFile: 내부 서버 프로세스 정보를 기록하는데 사용하는 파일.

  # 모든 아키텍쳐에서 꼭 필요한 것은 아니다.  하지만 필요하다고 생각하는

  # 경우에는 하나의 아파치 프로그램을 두 번 이상 실행시키는 경우 값이

  # 중복되지 않도록 해주는 것만 잊지 않으면 된다.

  #

  ScoreBoardFile logs/apache_runtime_status

 
 

  #

  # 표준 설정에서 서버는 httpd.conf, src.conf, access.conf 파일을

  # 차례대로 읽어나간다.  나중에 있는 2 개의 파일은 현재 아무 내용도

  # 없는 빈 상태로 배포되고 있다.  왜냐하면 모든 지시자를 그냥 하나의

  # 파일에 적는 것이 더욱 명료하기 때문이다.  주석으로 처리되어 있는

  # 값은 기본값이다.  서버가 이 파일 내용을 무시하도록 하기 위해서는

  # “/dev/null” (유닉스의 경우) 또는 “nul” (Win32) 값을 지정한다.

  #

  #ResourceConfig conf/srm.conf

  #AccessConfig conf/access.conf

 
 

  #

  # Timeout: 받기/보내기 타임 아웃 시간

  #

  Timeout 300

 
 

  클라이언트가 정보를 받을때까지 소요되는 대기시간의 최대값을

  지정한다. 쉽게 말해서 요청한 url이 없을 경우 error message가

  뜨기 까지의 시간이다. 네트워크가 응답이 늦을 수록 수치를 늘리는

  것이 좋다.

 
 

  #

  # KeepAlive: 지속성(persistent) 접속을 허가할 것인가 말 것인가?

  # (한 번의 접속에서 여러 개의 요청을 처리할 것인가 여부)

  # 허가하지 않기 위해서는 “Off”로 설정한다.

  # 허가하지 않는 것과 허가하는 것과의 효율 차이는 매우 크다.

  #

  KeepAlive On

 
 

  HTTP 1.0에서는 요청이 일어날 때마다 client와 Server간에 새로운

  연결이 만들어 지는데 이 설정으로 인하여 하나의 연결에서 여러

  요청이 가능하므로 요청을 처리하는 시간을 증진 시킨다. 이 기능을

  끄려면 off로 한다.

 
 

  필자의 경험상의 생각은 대형 site일 경우에는 이 기능을 끄기를

  권장한다. 이 기능을 Off를 시킬 경우에 system의 부하가 상당히 늘어

  나는 것을 느낄수는 있으나 Web상의 속도에서는 속도가 On일 경우보다

  더욱 빠르다는 것을 체감할수 있다. 즉 Web Server만을 돌린다면 Off로

  하는 것을 권장하며 여러 서비스를 할 경우에는 On으로 하라는 의미이다.

  참고로 이런 것을 체험할 정도의 대형 서비스란 하루 웹로그가 1G이상

  쌓이는 경우를 의미 하며 왠만한 site에서는 이 부분에 대해서 신경을

  쓰지 않아도 상관이 없다.

 
 

  #

  # MaxKeepAliveRequests: 지속성 접속 기간 동안 처리할 수 있는 최대 

  # 요청 갯수 0 을 넣으면 무한대이다.  높은 성능을 내기 위해서 높은 값을 

  # 추천한다.

  #

  MaxKeepAliveRequests 100

 
 

  접속된채로 특별한 요청이 없음에도 계속 연결을 유지시킬 수치를 지정

  한다. 값이 너무 크면 하나의 client가 Server의 resource를 독점 할 수 

  있으므로 적당 하게 잡는 것이 좋다.

 
 

  #

  # KeepAliveTimeout: 같은 접속 상태에서 같은 클라이언트의 요청이 타임 

  # 아웃되는 시간 (초 단위)

  #

  KeepAliveTimeout 15

 
 

  #

  # 서버 풀(Server-pool) 크기 조정.  몇 개의 프로세스가 필요한지 여러분

  # 에게 추측하도록 하기 보다는 현재의 부하 상태에 자동으로 적응하도록 

  # 되어 있다. 아파치 서버는 현재의 부하 상태와 순간적으로 급격히 상승

  # 하는 경우 값 (예를 들어 하나의 네스케이프 브라우져에서 동시에 여러 

  # 개의 요청이 들어올 수 있다)을 처리할 수 있는 충분한 갯수의 서버 

  # 프로세스를 유지하려 노력한다.

  #

  # 아파치 서버는 주기적으로 몇 개의 서버가 요청 대기 상태인지 점검한다.

  # 만약 MinSpareServers 보다 적다면 여유 서버 프로세스를 생성한다.

  # 만약 MaxSpareServers 보다 많으면 불필요한 여유 프로세스를 제거한다.

  # 이 곳에 제시된 기본값은 거의 대부분의 사이트에 적합하다.

  #

  MinSpareServers 8

  MaxSpareServers 20

 
 

  httpd 데몬프로세스의 child 프로세스에 대해 MinSpareServers보다

  작으면 새로운 프로세스를 생성하고, MaxSpareServers보다 많으면

  여분의 프로세스를 죽이는 것을 지정한다.

 
 

  #

  # 처음 시동할 때 만들 서버의 갯수 — 합리적인 근사치여야 한다.

  #

  StartServers 10

 
 

  httpd 서버를 처음 실행시킬때, 여분의 프로세스를 생성시킬 수치를

  지정한다. 반응 시간을 짧게 하기 위해 StartServers항목에서 말하는

  만큼의 Server process를 이미 만들어 두는 것인데, 실제로 

  Service를 하고 있지 않을 경우에는 잠자고 있으므로 System에

  부하를 주거나 하지는 않는다.

 
 

  #

  # 서버 프로세스의 최대값, 즉 동시에 접속할 수 있는 클라이언트 갯수를

  # 제한하는 값이다. — 만약 이 값에 도달한다면 클라이언트의 요청은

  # 봉쇄될 것이다.  따라서 이 값이 너무 낮아서는 안된다.  이 값은

  # 아파치 서버가 너무 많은 자원을 소비하여 전체 시스템을 먹통이 되도록

  # 하는 것을 방지하기 위해 사용될 뿐이다.

  #

  MaxClients 150

 
 

  동시에 접속할 수 있는 Client의 수를 지정한다.

 
 

  #

  # MaxRequestsPerChild: 각 자식 프로세스가 죽기 전까지 처리할

  # 수 있는 요청 갯수.  한 프로세스가 너무 오랫 동안 사용되면 메모리

  # 누출이나 자원 누출(아파치 때문에 또는 잘못된 라이브러리 때문에)

  # 이 발생할 수 있으므로 자식 프로세스는 자동으로 죽는다.  대부분의

  # 시스템에서는 필요치 않으나 솔라리스에서와 같이 라이브러리에서의

  # 자원 누출 현상을 막기 위해 필요하다.

  #

  MaxRequestsPerChild 100

 
 

  child 프로세스가 응답할 수치를 지정한다. 대부분의 system에서는

  이 기능이 필요 없다. 다만 Solias와 같은 몇몇의 system에서는 이

  기능을 지정해 줘야 하는 듯 하다.

 
 

  #

  # Listen: 아파치를 기본값 이외에도 특정 IP 주소 또는 포트에 연결 

  # 하도록 해준다.  <VirtualHost> 지시자도 참고하라.

  #

  #Listen 3000

  #Listen 12.34.56.78:80

 
 

  Virtual host설정에 관한 부분이다. Virtual Host에 관한 사항은 Name

  Server와 관련이 있으므로 따로 강좌를 하게 될 것이다.

 
 

  #

  # BindAddress: 이 옵션을 사용하여 가상 호스트를 지원할 수 있다.

  # 이 지시자를 이용하여 서버가 귀기울일 IP 주소를 지시할 수 있다.

  # “*”, IP 주소, 또는 완전한 인터넷 도메인 이름을 사용할 수 있다.

  # <VirtualHost>, Listen 지시자도 참고하라.

  #

  #BindAddress *

 
 

  하나 이상의 IP address가 있는 Server에서 사용한다. Server가 어떤 

  address에서 요청을 기댜려야 할지 정한다. Default로 주석 처리 되어 

  있어 Server가 모든 address를 청취한다. Default로 나두면 된다.

 
 

  # 동적 공유 객체(Dynamic Shared Object, DSO) 지원

  #

  # DSO 방식으로 만들어진 모듈의 기능을 사용하기 위해서는 그 기능에

  # 관련된 지시자를 사용하기에 앞서 알맞게 LoadModule' 지시자로

  # 모듈을 지시해주어야 한다.  DSO 작동방식에 대하여 자세히 알고 싶은

  # 사람은 아파치 1.3 배포 파일의 README.DSO 를 읽어보라.  여러분이

  # 갖고 있는 httpd 바이너리에 내장된(정적으로 링크되어 항상 사용

  # 가능한) 모듈 목록을 알고 싶을 때에는 httpd -l’ 명령을 실행한다.

  #

  # 주의: 모듈을 적재하는 순서는 매우 중요하다.  전문가의 조언 없이

  #       아무렇게나 순서를 바꾸지 말라.

  #

  # 예:

  # LoadModule foo_module libexec/mod_foo.so

  #

  # 모듈 관련 문서는 HTML 형식으로 “/home/httpd/manual/mod” 에

  # 놓아두었다.

  #

  # 주의: LoadModule 설정을 하나라도 바꾸었다면 LoadModule 설정 뒤에

  #       따라 나오는 AddModule 설정도 똑같이 바꾸어주기 바란다.

  #

 
 

  #LoadModule mmap_static_module  modules/mod_mmap_static.so

  LoadModule env_module           modules/mod_env.so

  LoadModule config_log_module    modules/mod_log_config.so

  LoadModule agent_log_module     modules/mod_log_agent.so

  LoadModule referer_log_module   modules/mod_log_referer.so

  #LoadModule mime_magic_module   modules/mod_mime_magic.so

  LoadModule mime_module          modules/mod_mime.so

  #LoadModule negotiation_module  modules/mod_negotiation.so

  LoadModule status_module        modules/mod_status.so

  LoadModule info_module          modules/mod_info.so

  LoadModule includes_module      modules/mod_include.so

  LoadModule autoindex_module     modules/mod_autoindex.so

  LoadModule dir_module           modules/mod_dir.so

  LoadModule cgi_module           modules/mod_cgi.so

  #LoadModule asis_module         modules/mod_asis.so

  #LoadModule imap_module         modules/mod_imap.so

  LoadModule action_module        modules/mod_actions.so

  #LoadModule speling_module      modules/mod_speling.so

  LoadModule userdir_module       modules/mod_userdir.so

  #LoadModule proxy_module        modules/libproxy.so

  LoadModule alias_module         modules/mod_alias.so

  LoadModule rewrite_module       modules/mod_rewrite.so

  LoadModule access_module        modules/mod_access.so

  LoadModule auth_module          modules/mod_auth.so

  #LoadModule anon_auth_module    modules/mod_auth_anon.so

  #LoadModule dbm_auth_module     modules/mod_auth_dbm.so

  LoadModule db_auth_module       modules/mod_auth_db.so

  #LoadModule digest_module       modules/mod_digest.so

  #LoadModule cern_meta_module    modules/mod_cern_meta.so

  LoadModule expires_module       modules/mod_expires.so

  LoadModule headers_module       modules/mod_headers.so

  #LoadModule usertrack_module    modules/mod_usertrack.so

  #LoadModule example_module      modules/mod_example.so

  #LoadModule unique_id_module    modules/mod_unique_id.so

  LoadModule setenvif_module      modules/mod_setenvif.so

  #LoadModule bandwidth_module    modules/mod_bandwidth.so

  #LoadModule put_module          modules/mod_put.so

 
 

  #

  # 확장 모듈

  #LoadModule php_module         modules/mod_php.so

 
 

  PHP2를 위한 Module로서 요즘에는 별로 사용을 안한다. 무시해랏!

 
 

  #

  # 다음 모듈은 MySQL 데이터베이스와 더불어 서버 스크립팅 언어로

  # 인기를 누리고 있는 PHP3 모듈입니다.

  #

  # 참고 사이트 : http://www.php.net

  #

  #LoadModule php3_module        modules/libphp3.so

 
 

  PHP3 module을 설치했을 경우 주석을 풀어주고 사용을 하면 된다.

 
 

  #

  # 다음 모듈은 아파치 펄 모듈로서 CGI 스크립트로 펄을 많이

  # 사용하는 사람들에게 펄 코드 실행 속도의 향상을 가져다 줍니다.

  #

  # 주의 : 설정을 바꾼 후 한 가지 할 일이 더 있다.

  #

  #        <Location /perl> … </Location>

  #

  #        위와 같은 설정을 찾아서 펄 스크립트를 사용할 수 있는

  #        디렉토리를 설정해주어야 한다.

  #

  #LoadModule perl_module        modules/libperl.so

 
 

  #

  #  모듈 실행 순서를 정확하게 하기 위해 사용 가능한 모듈(정적 또는

  #  공유 모듈 포함)로부터 완전한 목록을 다시 만들어 둔 것이다.

  #  [LOADMODULE 섹션을 하나라도 수정했다면 이 부분도 역시 알맞게

  #  수정하라]

  #

  ClearModuleList

  #AddModule mod_mmap_static.c

  AddModule mod_env.c

  AddModule mod_log_config.c

  AddModule mod_log_agent.c

  AddModule mod_log_referer.c

  #AddModule mod_mime_magic.c

  AddModule mod_mime.c

  #AddModule mod_negotiation.c

  AddModule mod_status.c

  AddModule mod_info.c

  AddModule mod_include.c

  AddModule mod_autoindex.c

  AddModule mod_dir.c

  AddModule mod_cgi.c

  #AddModule mod_asis.c

  #AddModule mod_imap.c

  AddModule mod_actions.c

  #AddModule mod_speling.c

  AddModule mod_userdir.c

  #AddModule mod_proxy.c

  AddModule mod_alias.c

  AddModule mod_rewrite.c

  AddModule mod_access.c

  AddModule mod_auth.c

  #AddModule mod_auth_anon.c

  #AddModule mod_auth_dbm.c

  AddModule mod_auth_db.c

  #AddModule mod_digest.c

  #AddModule mod_cern_meta.c

  AddModule mod_expires.c

  AddModule mod_headers.c

  #AddModule mod_usertrack.c

  #AddModule mod_example.c

  #AddModule mod_unique_id.c

  AddModule mod_so.c

  AddModule mod_setenvif.c

  #AddModule mod_bandwidth.c

  #AddModule mod_put.c

 
 

  # Extra Modules

  #AddModule mod_php.c

  #AddModule mod_php3.c

  #AddModule mod_perl.c

 
 

  #

  # ExtendedStatus 지시자는 “server-status” 처리기가 호출되었을

  # 때 아파치가 “매우 자세한” 상태 정보를 생성시킬 것인지

  # (ExtendedStatus On) 아니면 매우 기본적인 정보만 생성시킬

  # 것인지를 (ExtendedStatus Off) 제어한다.  기본값은 Off 이다.

  #

  ExtendedStatus On

 
 

  #

  #####################################################################

 
 

  ### 섹션 2: ‘주(Main)’ 서버 설정

  #

  # 이 섹션에 있는 지시자는 <VirtualHost> 정의에 의해 처리되지

  # 않는 모든 요청에 응답할 ‘주’ 서버가 사용할 값을 정한다.

  # 이 값들은 또한 이 파일 뒷 부분에서 정의할 모든 <VirtualHost>

  # 컨테이너의 기본값을 제공하기도 한다.

  #

  # 여기 나오는 모든 지시자는 <VirtualHost> 컨테이너 안에서도

  # 사용할 수 있으며 그 안에서 사용되면 해당 가상 호스트에 대하여

  # 전체 기본값을 무시하고 새롭게 정한 값이 채택된다.

  #

 
 

  #

  # 만약 ServerType (‘Global Environment’ 섹션에서 설정)이

  # “inetd”인 경우, inetd 설정 내용을 따르기 때문에 다시 몇 가지

  # 지시자는 아무런 효력을 발휘하지 않는다.

  # ServerAdmin 지시자까지 그냥 건너뛴다.

  #

 
 

  #

  # Port: 독립실행형(standalone) 서버가 요청을 기다리는 포트.

  # 1023 번보다 낮은 번호의 포트에 대해서는 httpd가 처음에는

  # root 권한으로 실행되어야 한다.

  #

  Port 80

 
 

  시스템에 의해 미리 httpd를 위해 예약된 포트 번호는 80번이다. 

  0에서 1023까지의 포트번호는 시스템에 의해 미리 예약되어 있다. 

  그 이상의 포트번호를 지정하여 일반사용자도 httpd을 설치, 

  운영가능하다. http://aaa.bbb.ccc:8080/ 등으로 사용할 수 있다. 

  만약 Server type을 Inetd로 했다면 /etc/services에서 지정을 해 

  줘야 한다.

 
 

  #

  # httpd가 다른 사용자 또는 그룹 권한으로 실행되게 하려면 우선은

  # httpd가 root 사용자 권한으로 실행되고 나서 설정한 다른 사용자

  # 권한으로 전환해야 한다.

  #

  # User/Group: httpd가 실행된 권한의 사용자/그룹의 이름(또는 #번호)

  #  . SCO (ODT 3)에서는 “User nouser”와 “Group nogroup”을

  #    사용한다.

  #  . UPUX 에서는 nobody로 실행하는 경우 공유 메모리를 사용할 수

  #    없을 것이다.  이 때는 www 등의 사용자를 만들고 그 사용자

  #    권한으로 실행되도록 한다.

  # 주의) 몇몇 커널들은 60000 이상의 (unsigned) 그룹 값을 설정하면

  # setgid(Group), semctl(IPC_SET) 함수를 거부한다.

  # 이런 시스템에서는 Group   #-1을 사용하지 말라!

  #

  User nobody

  Group nobody

 
 

  이 항목은 Default로 나두기를 권한다. 지정한 사용자와 그룹이 존재

  하지 않으면 서버가 동작하지 않기 때문이다. 굳이 설명을 하자면 이

  설정은 ServerType이 standalone일 때만 적용되는 것으로, 서버가

  사용자의 요청에 대해서 생성하는 child httpd 프로세스에 대한 

  user id, group id 이다. 일반적으로 시스템에서 사용하지 않는

  것들로 지정하는 것이 바람직하다.

 
 

  #

  # ServerAdmin: 서버에 문제가 발생했을 때 메일을 보낼 메일 주소.

  # 이 주소는 예를 들어 에러 문서와 같이 서버가 생성하는 페이지에

  # 나타날 것이다.

  #

  ServerAdmin admin at oops.org

 
 

  #

  # ServerName은 클라이언트 프로그램에게 돌려주는 서버 이름이

  # 다른 경우 호스트 이름을 설정할 수 있게 해준다. (예를 들어,

  # 호스트의 실제 이름이 아닌 ‘www’를 사용하도록 하는데 사용할

  # 수 있다.)

  #

  # 주의: 호스트 이름을 아무렇게나 만들어선 안된다.  이 이름은

  # 여러분의 호스트에 주어진 타당한 DNS 이름이어야 한다. 잘

  # 모르겠으면 네트웍 관리자에게 문의하라.

  # 호스트가 등록된 DNS 이름을 갖고 있지 않는 경우에는 이 곳에

  # IP 주소를 적는다.  어찌 되었든 IP 주소를 사용하여(예를 들어

  # http://123.45.67.89/) 접속할 수 있다.  이런 식으로 해서

  # 리다이렉션이 작동하도록 할 수 있다.

  #

  ServerName www.oops.org

 
 

  서버의 도메인 네임을 지정한다. 자신의 서버가 도메인 네임을

  가지지 않았다면 ip address로라도 꼭 적어 주어야 계정 접속을

  할때 ~account 뒤에 “/”를 붙이지 않고 접속을 할수가 있다.

  도메인 이름을 가지고 있다면 주의할 것은 꼭 실제로 존재하는

  URL 이어야 한다는 것이다.

 
 

  #

  # DocumentRoot: 제공할 문서의 상위 디렉토리.

  # 기본적으로 모든 요청은 이 디렉토리로부터 처리된다. 하지만

  # 심볼릭 링크나 앨리어스(alias)를 사용하여 다른 위치를

  # 가리키도록 할 수 있다.

  #

  DocumentRoot “/home/httpd/html”

 
 

  웹 문서의 기본 directory이다. 보통 우리가 url을 쳤을때 접속되는

  최초의 directory이다. 소스로 apache server를 설치했을 경우에는

  default로 /usr/local/apache/htdocs이며 알짜 RedHat에서는

  /home/httpd/html 이다. 참고로 이전 버전의 apach를 소스로

  compile을 했을 경우에는 /usr/local/etc/httpd/htdocs 가 된다.

  1.3.4 부터 위와 같이 변경이 되었다. “@@ServerRoot@@ 를 이용

  하여 ServerRoot 인자의 directory 경로의 값을 변수와 같이 사용

  할 수도 있다.

 
 

  <IfModule mod_bandwidth.c>

    #

    # 전송속도 제한에 관한 설정이다. BandWidthModule 지시자는

    # 전체 설정에 사용이 되어지며, BandWidth, LargeFileLimit,

    # MinBandWidth는 지역 설정에서 사용을 할수도 있다.

    #

    BandWidthModule On

 
 

    #

    # 문  법: BandWidth <도메인|IP주소|all> <속도>

    # 기본값: 없음

    # 사용처: 전체 설정, 디렉토리별 설정, .htaccess

    #

    # 호스트에 따라 속도의 제한을 걸 수 있다. all은 모든 호스트에

    # 대해서 제한을 거는 것이며 도메인이나 IP주소로 접속 호스트를

    # 지정할 수 있다. 그리고 네트워크/마스크 포맷*으로 지정할 수도

    # 있다. (예: 192.168.0.0/24)

    #

    # 속도는 Bytes/second로 지정을 하며 0의 경우는 제한이 없다.

    #

    # 디렉토리별 설정 예

    #

    # <Directory /home/httpd/html>

    #   BandWidth 192.168.1 0

    #   BandWidth foobar.net 0

    #   BandWidth all 1024

    # </Directory>

    #

    # /home/httpd/html 디렉토리에서의 제한을 한 것이다. 192.168.1.*

    # IP 주소를 가진 호스트와 *.foobar.net이라는 도메인명을 사용하는

    # 호스트에 대해서는 제한을 걸지 않으며 그 외 모든 접속에 대해서

    # 1024Bytes/sec으로 제한을 한다.

    #

    BandWidth       all     0

 
 

    #

    # 문  법: LargeFileLimit <파일크기> <속도>

    # 기본값: 없음

    # 사용처: 전체 설정, 디렉토리별 설정, .htaccess

    #

    # 일정 이상의 크기를 가진 파일을 누군가가 받아 가려 할 때

    # 그 속도의 제한을 걸 수 있다. 파일크기는 KByte 기준이며 속도는

    # 역시 Bytes/secound 이다.

    #

    # LargeFileLimit 1024 4096

    # LargeFileLimit 2048 2048

    #

    # 위 예제는 1024 ~ 2047KB 크기의 파일을 받아가려 할 때 속도를

    # 4KB/sec으로 제한하고 2048KB 이상의 파일은 2KB/sec으로 제한을

    # 하는 것이다.

    #

    # LargeFileLimit 1024 4096

 
 

    #

    # 문  법: MinBandWidth <도메인|IP주소|all> <속도>

    # 기본값: all, 256

    # 사용처: 전체 설정, 디렉토리별 설정, .htaccess

    #

    # 데이타 전송의 최저 속도를 지정한다.

    #

    # BandWidth를 4096 (4KBytes/sec)으로 지정하고 MinBandWidth가

    # 1024로 지정이 되어 있을 때:

    #

    #   – 지정된 호스트에서 하나만 접속할 경우, 4096bytes/sec이

    #     최고의 속도가 된다.

    #

    #   – 지정된 호스트에서 두개가 동시에 접속할 경우, 각각의 세션에

    #     대해 2048Bytes/sec이 최고의 속도가 된다.

    #

    #   – 더 많은 동시 접속이 일어나도 세션 당 최고 속도는

    #     1024Bytes/sec 이하로는 줄지 않는다.

    #     (MinBandWidth 값이 1024기 때문에)

    #

    # MinBandWidth가 “-1″로 지정되면 모든 세션에 대해 최고 속도는

    # BandWidth나 LageFileLimit에서 지정한 속도가 나올 수 있게 된다.

    #

    # BandWidth를 4096으로 지정하고 MinBandWidth가 -1이라면 동시에

    # 지정된 호스트에서 몇개의 접속을 하더라도 각 세션의 속도는

    # 4096Bytes/sec 까지 나오게 되는 것이다.

    #

    MinBandWidth    all     -1

  </IfModule>

 
 

  IfModule 이라는 지시자는 module을 올렸을 경우에만 작동을

  가능하게 해 주는 지시자 이다. 즉 Module로 올라와 있지 않을

  경우에는 작동을 하지 않는다.

 
 

 
 

  #

  # 아파치가 접근할 수 있는 각 디렉토리에 대하여 어떤 서비스와

  # 기능을 허용할 것인지 거부할 것인지 여부를 설정할 수 있다.

  # 디렉토리에 대한 설정 내용은 그 하부 디렉토리에도 영향을 미친다.

  #

  # 우선, “기본값”을 매우 제한적인 상태로 설정한다.

  #

 
 

  <directory> tag에 의하여 각 directory마다 적절하게 permission을

  걸수가 있다.

 
 

  <Directory />

    Options FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Deny from env=no_access

  </Directory>

 
 

  “Deny from env=no_access” 설정에 대해서는 뒤에 다루기로 한다.  

 
 

  #

  # 이 곳부터 허용할 특정 기능을 알맞게 설정해나간다는 사실을

  # 주목하자. 여러분이 기대한 대로 작동하지 않는 것이 있다면 그

  # 기능을 가능 상태로 설정해두었는지 점검하기 바란다.

  #

 
 

  #

  # 다음 내용은 여러분이 설정한 DocumentRoot 값으로 변경해서

  # 사용한다.

  #

  <Directory “/home/httpd/html”>

 
 

  #

  # 다음 값에는 “None”, “All”, 또는 “Indexes”, “Includes”,

  # “FollowSymLinks”, “ExecCGI”, “MultiViews”의 자유로운

  # 조합이 가능하다.

  #

  # “MultiViews” 만큼은 “Options All”을 사용한다 할 지라도

  # 명시적으로 적어야만 작동한다는 사실을 알아두자.

  #

      Options Indexes FollowSymLinks Includes

 
 

  지정할수 있는  옵션의 예이다.

 
 

None

어떤 옵션도 이용할 수 없다.

All

지정한 directory에서 모든 명령을 이용할 수 있다.

Indexes

URL에 지정된 디렉토리에 (index.html 같은) 지정된 파일이 없을 경우 디렉토리의 파일 목록을 보여주는 옵션.

Includes

서버측의 추가적인 정보를 제공할 수 있게 한다.

IncludesNoExec

서버측의 추가적인 정보를 제공할 수 있게 하지만, 어떠한 실행 파일을 실행하는 것을 방지한다.

FollowSymLinks

디렉토리상의 심볼릭 링크를 사용가능하게 한다.

ExecCGI

CGI 스크립트를 실행할 수 있게 한다.

MultiViews

All 옵션이 설정되었을 때만 지정된 목록의 multiviews를 허용한다.

 
 

# 다음은 각 디렉토리에 위치한 .htaccess 파일에서 어떤 옵션을

# 마음대로 제어할 수 있는지 결정한다.

# “All” 또는 “Options”, “FileInfo”, “AuthConfig”, “Limit”의 # 자유로운 결합이 가능하다.

# AllowOverride None.htaccess파일은 서버의 각 디렉토리에 만들어서 각 디렉토리에 대한 접근을 제어하기 위한 것으로 디렉토리에 .htaccess파일이 있으면, 서버 전체에 작용하는 access.conf 보다 우선권을 가진다. .htaccess파일에 대한 Override에 대한 옵션이다. 가능한 옵션은 다음과 같다.

 
 

None

.htaccess파일을 읽을 수 없게 한다.

All

모든 지정에 대해 가능하게 한다.

Options

규정된 디렉토리 형식을 콘트롤하는 지정의 사용을 허락한다.

FileInfo

문서형식을 콘트롤하는 지정의 사용을 허용한다.

AuthConfig

사용자 인증 지정의 사용을 허용한다. 사용자 인증 변수를 사용한다.

Limit

호스트 접근을 콘트롤하는 지정을 허용한다.

# # 서버로부터 자료를 얻어갈 수 있는 위치를 제어한다. # Order allow,deny Allow from all Deny from en

 
 

 
 

 
 

 
 

 
 

Comments

comments

2 댓글

  1. Hello friends!
    I am an official representative of private company which deals with all kinds of written work (essay, coursework, dissertation, presentation, report, etc) in short time.
    We are ready to offer a free accomplishment of written work hoping for further cooperation and honest feedback about our service.
    This offer has limited quantities!!!
    Details on our website:
    https://top-study.work

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.