Server & OS

아파치 웹서버 httpd.conf 파일 세팅 매뉴얼

페이지 정보

본문

아파치 웹서버 httpd.conf 파일 세팅 매뉴얼 참고문서


#######################################################
#
# 다음 한글화된 설정 파일은 Apache 1.3.20을 위한 것입니다.
#
# 원본 : 이 만 용
# 작성 : 김 정 균
#
########################################################
#
# 문제가 발생했을 때에는 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를
# 참고하라.
#
# 정확한 이해 없이 대충 읽어나가는 일이 없도록 하자. 여기에 적은 내용을
# 그대로 여러분의 상황에 적용시키려 하지 말라. 다음 내용은 실제 지시
# 내용을 위한 힌트라고만 생각하자. 내용에 대하여 의문이 있을 때에는
# 온라인 문서를 참조하라. 이 사실에 대하여 지금 여러분에게 충분히
# 경고해 두었음을 밝히는 바이다.
#
# 아파치 서버는 이 파일을 읽고 난 후, /var/www/conf/srm.conf 파일을
# 처리하고 그 다음 /var/www/conf/access.conf 파일을 읽는다.
# 지금 현재 이 설정 파일 안에서 ResourceConfig, AccessConfig 지시자를 사용하여
# 설정 파일 이름을 바꾸면, 변경된 이름의 설정 파일을 읽는다.
# (여기서 /var/www 부분은 아파치 서버의 기본 디렉토리로 대체하여
# 생각하면 된다. 예를 들어 여러분이 직접 아파치를 컴파일하여 설치하는
# 경우에는 일반적으로 /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

#
# 서버 루트(ServerRoot) : 서버의 설정 파일, 에러 파일, 로그 파일이
# 기록되는 디렉토리의 최상위 경로명.
# # 주의! 만약 서버 루트를 NFS (또는 기타 네트웍 파일 시스템) 마운트된
# 곳에 두고자 한다면 LockFile 문서를 꼭 읽어보아야 한다.
# ();
# 문서를 읽고 나면 앞으로 닥칠 지 모르는 몇 가지 문제점을 피할 수 있다.
#
# 디렉토리 경로 뒤에 슬래쉬(/) 문자를 쓰지 않는다!!!
#
ServerRoot "/etc/httpd"

#
# LockFile 지시자는 아파치를 USE_FCNTL_SERIALIZED_ACCEPT 또는
# USE_FLOCK_SERIALIZED_ACCEPT 옵션을 주고 컴파일한 경우, 잠금 파일을
# 경로를 지정할 때 사용한다. 이 지시자 값은 일반적으로 기본값이
# 되도록 놔둔다. 이 값을 바꾸는 경우는 로그 디렉토리가 NFS 마운트된
# 곳에 있는 경우로서 잠금 파일은 항상 네트웍 파일 시스템이 아닌
# 로컬 디스크에 저장되어야 하기 때문이다. 주 서버 프로세서의 PID 값이
# 자동으로 파일 이름 뒤에 붙는다.
#
#LockFile logs/accept.lock

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

#
# ScoreBoardFile: 내부 서버 프로세스 정보를 기록하는데 사용하는 파일.
# 모든 아키텍쳐에서 꼭 필요한 것은 아니다. 하지만 필요하다고 생각하는
# 경우에는 하나의 아파치 프로그램을 두 번 이상 실행시키는 경우 값이
# 중복되지 않도록 해주는 것만 잊지 않으면 된다.
#
ScoreBoardFile /var/run/httpd.scoreboard

#
# 표준 설정에서 서버는 httpd.conf, src.conf, access.conf 파일을
# 차례대로 읽어나간다. 나중에 있는 2 개의 파일은 현재 아무 내용도
# 없는 빈 상태로 배포되고 있다. 왜냐하면 모든 지시자를 그냥 하나의
# 파일에 적는 것이 더욱 명료하기 때문이다. 주석으로 처리되어 있는
# 값은 기본값이다. 서버가 이 파일 내용을 무시하도록 하기 위해서는
# "/dev/null" (유닉스의 경우) 또는 "null" (Win32) 값을 지정한다.
#
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf

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

#
# KeepAlive: 지속성(persistent) 접속을 허가할 것인가 말 것인가?
# (한 번의 접속에서 여러 개의 요청을 처리할 것인가 여부)
# 허가하지 않기 위해서는 "Off"로 설정한다.
# 허가하지 않는 것과 허가하는 것과의 효율 차이는 매우 크다.
#
KeepAlive On

#
# MaxKeepAliveRequests: 지속성 접속 기간 동안 처리할 수 있는 최대 요청 갯수
# 0 을 넣으면 무한대이다. 높은 성능을 내기 위해서 높은 값을 추천한다.
#
MaxKeepAliveRequests 1000

#
# KeepAliveTimeout: 같은 접속 상태에서 같은 클라이언트의 요청이 타임 아웃되는
# 시간 (초 단위)
#
KeepAliveTimeout 15

#
# 서버 풀(Server-pool) 크기 조정. 몇 개의 프로세스가 필요한지 여러분에게
# 추측하도록 하기 보다는 현재의 부하 상태에 자동으로 적응하도록 되어 있다.
# 아파치 서버는 현재의 부하 상태와 순간적으로 급격히 상승하는 경우 값
# (예를 들어 하나의 네스케이프 브라우져에서 동시에 여러 개의 요청이
# 들어올 수 있다)을 처리할 수 있는 충분한 갯수의 서버 프로세스를 유지하려
# 노력한다.
#
# 아파치 서버는 주기적으로 몇 개의 서버가 요청 대기 상태인지 점검한다.
# 만약 MinSpareServers 보다 적다면 여유 서버 프로세스를 생성한다.
# 만약 MaxSpareServers 보다 많으면 불필요한 여유 프로세스를 제거한다.
# 이 곳에 제시된 기본값은 거의 대부분의 사이트에 적합하다.
#
MinSpareServers 8
MaxSpareServers 20

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

#
# 서버 프로세스의 최대값, 즉 동시에 접속할 수 있는 클라이언트 갯수를
# 제한하는 값이다. -- 만약 이 값에 도달한다면 클라이언트의 요청은
# 봉쇄될 것이다. 따라서 이 값이 너무 낮아서는 안된다. 이 값은
# 아파치 서버가 너무 많은 자원을 소비하여 전체 시스템을 먹통이 되도록
# 하는 것을 방지하기 위해 사용될 뿐이다.
#
MaxClients 200

#
# MaxRequestsPerChild: 각 자식 프로세스가 죽기 전까지 처리할 수 있는
# 요청 갯수. 한 프로세스가 너무 오랫 동안 사용되면 메모리 누출이나
# 자원 누출(아파치 때문에 또는 잘못된 라이브러리 때문에)이 발생할 수
# 있으므로 자식 프로세스는 자동으로 죽는다. 대부분의 시스템에서는
# 필요치 않으나 솔라리스에서와 같이 라이브러리에서의 자원 누출 현상을
# 막기 위해 필요하다.
#
MaxRequestsPerChild 1000

#
# Listen: 아파치를 기본값 이외에도 특정 IP 주소 또는 포트에 연결하도록
# 해준다. 지시자도 참고하라.
#
#Listen 3000
#Listen 12.34.56.78:80

#
# BindAddress: 이 옵션을 사용하여 가상 호스트를 지원할 수 있다.
# 이 지시자를 이용하여 서버가 귀기울일 IP 주소를 지시할 수 있다.
# "*", IP 주소, 또는 완전한 인터넷 도메인 이름을 사용할 수 있다.
# , Listen 지시자도 참고하라.
#
#BindAddress *

#
# 동적 공유 객체(Dynamic Shared Object, DSO) 지원
#
# DSO 방식으로 만들어진 모듈의 기능을 사용하기 위해서는 그 기능에 관련된
# 지시자를 사용하기에 앞서 알맞게 `LoadModule' 지시자로 모듈을
# 지시해주어야 한다. DSO 작동방식에 대하여 자세히 알고 싶은 사람은
# 아파치 1.3 배포 파일의 README.DSO 를 읽어보라. 여러분이 갖고 있는
# httpd 바이너리에 내장된(정적으로 링크되어 항상 사용가능한) 모듈 목록을
# 알고 싶을 때에는 `httpd -l' 명령을 실행한다.
#
# 주의: 모듈을 적재하는 순서는 매우 중요하다. 전문가의 조언 없이
# 아무렇게나 순서를 바꾸지 말라.
#
# 예:
# LoadModule foo_module libexec/mod_foo.so
#
# 모듈 관련 문서는 HTML 형식으로 "/var/www/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 redurl_module modules/mod_url.so
#LoadModule gzip_module modules/mod_gzip.so

#
# 확장 모듈
#
# 이 모듈은 MySQL 데이터베이스와 더불어 서버 스크립팅 언어로 인기를
# 누리고 있는 PHP4 모듈입니다.
#
# 참고 사이트 : http://www.php.net
#
#LoadModule php4_module modules/libphp4.so

#
# 다음 모듈은 아파치 펄 모듈로서 CGI 스크립트로 펄을 많이 사용하는
# 사람들에게 펄 코드 실행 속도의 향상을 가져다 줍니다.
#
# 주의 : 설정을 바꾼 후 한 가지 할 일이 더 있다.
# ...
# 위와 같은 설정을 찾아서 펄 스크립트를 사용할 수 있는
# 디렉토리를 설정해주어야 한다.
#
#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
AddModule mod_url.c
#AddModule mod_gzip.c

# Extra Modules
#AddModule mod_php4.c
#AddModule mod_perl.c

#
# ExtendedStatus 지시자는 "server-status" 처리기가 호출되었을 때
# 아파치가 "매우 자세한" 상태 정보를 생성시킬 것인지
# (ExtendedStatus On) 아니면 매우 기본적인 정보만 생성시킬 것인지를
# (ExtendedStatus Off) 제어한다. 기본값은 Off 이다.
#
ExtendedStatus On

# ServerTokens 지시자는 apache의 header 정보를 어디 까지 보여줄지를
# 결정한다.
# ServerTokens Prod[uctOnly] Apache 만 보여줌
# ServerTokens Min[imal] Apache 버젼만 보여줌
# ServerTokens OS 아파치 버젼과 운영체제를 보여줌
# ServerTokens Full 모두 보여줌
# http://httpd.apache.org/docs/mod/core.html#servertokens 참조
#
ServerTokens Prod

#########################################################
### 섹션 2: '주(Main)' 서버 설정
#
# 이 섹션에 있는 지시자는 정의에 의해 처리되지 않는
# 모든 요청에 응답할 '주' 서버가 사용할 값을 정한다.
# 이 값들은 또한 이 파일 뒷 부분에서 정의할 모든
# 컨테이너의 기본값을 제공하기도 한다.
#
# 여기 나오는 모든 지시자는 컨테이너 안에서도 사용할
# 수 있으며 그 안에서 사용되면 해당 가상 호스트에 대하여 전체
# 기본값을 무시하고 새롭게 정한 값이 채택된다.
#

#
# 만약 ServerType ('Global Environment' 섹션에서 설정)이 "inetd"인
# 경우, inetd 설정 내용을 따르기 때문에 다시 몇 가지 지시자는
# 아무런 효력을 발휘하지 않는다.
# ServerAdmin 지시자까지 그냥 건너뛴다.
#

#
# Port: 독립실행형(standalone) 서버가 요청을 기다리는 포트.
# 1023 번보다 낮은 번호의 포트에 대해서는 httpd가 처음에는
# root 권한으로 실행되어야 한다.
#
Port 80

#
# 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 apache
Group apache

#
# ServerAdmin: 서버에 문제가 발생했을 때 메일을 보낼 메일 주소.
# 이 주소는 예를 들어 에러 문서와 같이 서버가 생성하는 페이지에
# 나타날 것이다.
#
ServerAdmin root@localhost

#
# ServerName은 클라이언트 프로그램에게 돌려주는 서버 이름이 다른 경우
# 호스트 이름을 설정할 수 있게 해준다. (예를 들어, 호스트의 실제 이름이
# 아닌 'www'를 사용하도록 하는데 사용할 수 있다.)
#
# 주의: 호스트 이름을 아무렇게나 만들어선 안된다. 이 이름은 여러분의
# 호스트에 주어진 타당한 DNS 이름이어야 한다. 잘 모르겠으면 네트웍
# 관리자에게 문의하라.
# 호스트가 등록된 DNS 이름을 갖고 있지 않는 경우에는 이 곳에 IP 주소를
# 적는다. 어찌 되었든 IP 주소를 사용하여(예를 들어 http://123.45.67.89/)
# 접속할 수 있다. 이런 식으로 해서 리다이렉션이 작동하도록 할 수 있다.
#
#ServerName new.host.name

#
# DocumentRoot: 제공할 문서의 상위 디렉토리.
# 기본적으로 모든 요청은 이 디렉토리로부터 처리된다. 하지만
# 심볼릭 링크나 앨리어스(alias)를 사용하여 다른 위치를 가리키도록
# 할 수 있다.
#
DocumentRoot "/var/www/html"


#
# 전송속도 제한에 관한 설정이다. BandWidthModule 지시자는
# 전체 설정에 사용이 되어지며, BandWidth, LargeFileLimit,
# MinBandWidth는 지역 설정에서 사용을 할수도 있다.
#
BandWidthModule On

#
# 문 법: BandWidth <도메인|IP주소|all> <속도>
# 기본값: 없음
# 사용처: 전체 설정, 디렉토리별 설정, .htaccess
#
# 호스트에 따라 속도의 제한을 걸 수 있다. all은 모든 호스트에
# 대해서 제한을 거는 것이며 도메인이나 IP주소로 접속 호스트를
# 지정할 수 있다. 그리고 네트워크/마스크 포맷*으로 지정할 수도
# 있다. (예: 192.168.0.0/24)
#
# 속도는 Bytes/second로 지정을 하며 0의 경우는 제한이 없다.
#
# 디렉토리별 설정 예
#
#
# BandWidth 192.168.1 0
# BandWidth foobar.net 0
# BandWidth all 1024
#
#
# /var/www/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



#
# 아파치가 접근할 수 있는 각 디렉토리에 대하여 어떤 서비스와 기능을
# 허용할 것인지 거부할 것인지 여부를 설정할 수 있다.
# 디렉토리에 대한 설정 내용은 그 하부 디렉토리에도 영향을 미친다.
#
# 우선, "기본값"을 매우 제한적인 상태로 설정한다.
#


Options SymLinksIfOwnerMatch

AllowOverride None

Order allow,deny

Allow from all

Deny from env=no_access


#
# 이 곳부터 허용할 특정 기능을 알맞게 설정해나간다는 사실을 주목하자.
# 여러분이 기대한 대로 작동하지 않는 것이 있다면 그 기능을 가능 상태로
# 설정해두었는지 점검하기 바란다.
#

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


#
# 다음 값에는 "None", "All", 또는 "Indexes", "Includes",
# "FollowSymLinks", "ExecCGI", "MultiViews"의 자유로운 조합이
# 가능하다.
#
# "MultiViews\\ 만큼은 "Options All"을 사용한다 할 지라도 명시적으로
# 적어야만 작동한다는 사실을 알아두자.
#
Options Indexes FollowSymLinks IncludesNoEXEC

#
# 다음은 각 디렉토리에 위치한 .htaccess 파일에서 어떤 옵션을
# 마음대로 제어할 수 있는지 결정한다.
# "All" 또는 "Options", "FileInfo", "AuthConfig", "Limit"의 자유로운
# 결합이 가능하다.
#

AllowOverride None

#
# 서버로부터 자료를 얻어갈 수 있는 위치를 제어한다.
#

Order allow,deny

Allow from all

Deny from env=no_access


#
# UserDir: ~user 요청을 받았을 때 사용자의 홈 디렉토리 뒤에 추가할
# 디렉토리 이름.
#
# 주의 : 알짜 리눅스 시스템에서는 사용자가 자신의 홈 디렉토리에 public_html
# 디렉토리를 만들어도 외부에서 홈 페이지를 볼 수 없다.
# 왜냐하면 각 계정 홈 디렉토리에 대한 보안을 중요하게 생각했기 때문에
# 홈 디렉토리에 대하여 사용자 계정과 사용자 자신의 그룹 이외에는
# 아무런 접근 허가권도 갖고 있지 않기 때문이다.
#
# 개인 홈 디렉토리를 가질 사람은 chmod a+x ~ 명령을 일단 실행해주어
# (보통) nobody 권한의 아파치 프로세스가 홈 디렉토리에 접근할 수
# 있도록 허가해주어야 한다.
# 물론 public_html과 홈 페이지 파일에 대하여 모든 사용자가 최소한
# 읽기 권한은 갖도록 설정해주어야 한다.
#
UserDir public_html

#
# UserDir 디렉토리에 대한 접근을 제어한다. 다음은 사용자 홈 페이지에
# 대하여 읽기만 가능하도록 한 예제 설정 내용이다. 참고 자료로
# 사용하기 바란다.
#
# 경로 지정시 주의할점. DirectoryMath 의 경로는 정규 표현식을 사용할수
# 있다. 아래의 * 은 all 의 의미가 아니라는 것을 주의한다. 아래의 .* 이
# all 을 의미하며 정확하게는 /home/어떠한문자/public_html 을 의미한다.
# 이는 /home 하위의 어떠한 경로의 public_html 에서는 아래의 설정을 적용
# 한다는 것을 의미한다.
#

# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
#
# Order allow,deny
# Allow from all
#
#
# Order deny,allow
# Deny from all
#


#
# DirectoryIndex: 준비된 HTML 디렉토리 인덱스로 사용할 파일이나
# 파일 목록의 이름을 나열한다. 여러 개를 나열할 때는 스페이스로
# 구분한다.
#
DirectoryIndex index.html index.htm index.php index.php3 index.shtml index.cgi

#
# AccessFileName: 각 디렉토리에 대하여 접근 제어 정보 내용을
# 담고 있을 파일 이름
#
AccessFileName .htaccess

#
# 다음 행은 웹 브라우져가 .htaccess 파일을 접근할 수 없도록 하는
# 설정이다. .htaccess에는 인증 정보가 들어있는 경우가 빈번하므로
# 보안 상 이유로 이 파일에 대한 접근은 불허해야 한다.
# 웹 방문객들이 이 파일을 보게 하고 싶으면 다음 행들을 주석 처리하라.
# 만약 AccessFileName 설정을 다른 파일명으로 바꾸었다면 알맞게
# .htaccess를 그 이름으로 바꾸어준다.
#


Order allow,deny

Deny from all


#
# CacheNegotiateDocs: 기본적으로 아파치는 내용에 따라 협상된 문서에
# 대해서는 "Pragma: no-cache" 내용을 전송한다. 이 행은 프록시 서버로
# 하여금 문서를 캐쉬하지 않도록 요청한다. 다음 행의 주석을 풀면
# 이 기능을 해제하고 모든 프록시가 문서들을 캐쉬할 수 있도록 한다.
#
#CacheNegotiatedDocs

#
# UseCanonicalName: (1.3 버전에 새롭게 등장) 이 설정을 켜두면,
# 아파치가 자기 참조 URL(반응이 오고 있는 서버를 다시 가리키는
# URL)을 만들 필요가 있을 때마다 "공식적인" 이름을 만들기 위해
# ServerName과 Port를 사용한다. 그렇지 않으면 아파치는 가능한 한
# 클라이언트가 제공한 호스트이름:포트 값을 사용한다.
# 이 설정은 CGI 스크립트의 SERVER_NAME, SERVER_PORT에도 영향을
# 미친다.
#
UseCanonicalName On

#
# TypesConfig 는 mime.types 파일 또는 이에 해당하는 파일을 찾을
# 위치를 결정한다.
#
TypesConfig /etc/mime.types

#
# DefaultType이란 파일 확장자와 같은 것을 통해 MIME 타입을 알 수 없는
# 문서에 대하여 사용할 기본 MIME 타입을 말한다. 여러분의 서버에 주로
# 텍스트나 HTML 문서가 많다면 "text/plain"을 쓰는 것이 좋다.
# 대부분이 실행 프로그램이나 이미지 등 바이너리인 경우에는
# 웹 브라우져가 텍스트라고 생각하여 바이너리 파일을 화면에 표시하지
# 않도록 하기 위해 "application/octet-stream"를 적는다.
#
DefaultType text/plain

#
# mod_mime_magic 모듈을 사용하면 파일의 내용을 가지고 파일의 타입에
# 힌트를 얻는다. MIMEMagicFile 지시자를 사용하여 모듈에게 힌트
# 정보가 저장되어 있는 파일을 설정한다.
# mod_mime_magic은 기본 서버의 일부가 아니다.(따라서 LoadModule
# 설정을 사용하여 모듈을 추가해야 한다.) 또는 서버를 다시 컴파일해서
# mod_mime_magic을 추가해야 한다. 그렇기 때문에 컨테이너에
# 포함되어 있는 것이다. 다음 설정은 모듈이 서버에 포함되어 있을 때에만
# MIMEMagicFile 지시자를 처리하도록 해준다.
#


MIMEMagicFile conf/magic


#
# HostNameLookups: 클라이언트의 이름 또는 IP 주소만을 기록할 지 여부.
# 예를 들어 www.apache.org (on) 또는 204.62.129.132 (off)
# 기본값이 off 인 이유는 각 클라이언트 요청이 올 때마다 최소한 1 번
# 이상의 네임 서버 요청이 발생하기 때문이다. 그러나 꼭 필요한 경우에는
# 이 기능을 켜둔다.
#
HostnameLookups Off

#
# ErrorLog: 에러 기록 파일의 위치.
# 컨테이너 안에서 ErrorLog 설정을 하지 않으면
# 그 가상 호스트에 관련된 에러 메시지도 역시 이 곳에 기록된다.
# 컨테이너 안에서 에러 로그 파일을 정의하면
# 관련된 에러 메시지는 그 파일로 저장된다.
#
ErrorLog logs/error_log

#
# LogLevel: error_log에 기록될 메시지 분량을 제어한다.
# debug, info, notice, warn, error, crit, alert, emerg 등의
# 값이 가능하다.
# alert, emerg.
#
LogLevel warn

#
# 다음 지시자는 CustomLog 지시자(아래 참고)에서 사용할 몇 가지
# 형식에 대한 별명을 정의한다.
#
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# Image 파일을 로그에 남기지 않기 위한 환경 설정
SetEnvIf Request_URI \\.gif img-nosave
SetEnvIf Request_URI \\.jpg img-nosave
SetEnvIf Request_URI \\.png img-nosave

#
# 접근 로그 파일의 위치와 형식(공통 로그파일 형식)
# 컨테이너 안에서 접근 로그파일 설정을 하지 않으면
# 모든 기록이 이 파일에 남게 된다. 이와 반대로 각 마다
# 접근 로그파일을 정의하면 모든 처리가 바로 그 파일에 기록된다.
#
CustomLog logs/access_log common

#
# 에이전트 로그파일과 참조자(referer) 로그파일을 갖기 위해서는
# 다음 지시 내용의 주석 처리를 해제하라.
#
# 여기서 에이전트란 여러분의 사이트에 방문하는 브라우져를 말한다.
# 에이전트 로그를 남기면 여러분의 사이트에 방문하는 브라우져의 종류에 대한
# 통계를 낼 수 있다.
#
# 참조자란 주로 배너 광고주에게 중요한 것으로서 여러분의 사이트 바로
# 직전에 방문한 사이트를 말한다.
#
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent

#
# 하나의 로그파일에 접근, 에이전트, 참조자 정보를 다 저장하기 위해서는
# (통합 로그파일 형식) 다음 지시 내용을 사용하라.
#
# 몇 달만 운영해도 접속이 많은 사이트에서는 combined 로그 파일이 어마어마하게
# 커져서 루트 파일 시스템을 꽉 채워 버리는 일이 발생할 수 있다!
#
# 만약 로그에 이미지를 남기고 싶지 않다면 두번째 combined 를 사용하도록
# 한다. 첫번째 combined 는 image 의 로그 역시 포함된다.
#
#CustomLog logs/access_log combined
#CustomLog logs/access_log combined env=!img-nosave

#
# 부차적으로 서버가 생성하는 페이지(에러 문서, FTP 디렉토리 목록,
# mod_status, mod_info 출력 등, 그러나 CGI 생성 문서는 제외)에
# 서버 버전과 가상 호스트 이름을 포함하는 행을 추가하도록 한다.
# "Email"로 설정하면 ServerAdmin으로의 mailto: 링크를 포함한다.
# On | Off | EMail 중 하나로 설정한다.
#
ServerSignature On

#
# Aliases: 필요한 만큼의 별칭을 만들어 사용한다.(제한 없음)
# 형식은 다음과 같다.
# Alias 가짜이름 실제이름
#
# 가짜 이름 뒤에 / 를 포함하면 아파치 서버는 URL에도 / 이 있어야
# 처리함을 잘 알아두자. 따라서 "/icons"는 별칭 처리되지 않고
# "/icons/"만 별칭 처리된다.
#
Alias /icons/ "/var/www/icons/"



Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all


#
# ScriptAlias: 서버 스크립트를 포함하는 디렉토리를 제어한다.
# ScriptAlias는 근본적으로 Alias와 같으나 가리키고 있는 실제 디렉토리
# 안에 들어있는 문서를 실행 프로그램으로 취급하여 실행한다.
# 맨 뒤에 붙는 "/" 에 대한 규칙은 Alias와 마찬가지이다.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#
# "/var/www/cgi-bin" 부분은 ScriptAlias로 별칭 처리된 실제 CGI
# 디렉토리로 설정해야 한다.
#


AllowOverride None

Options ExecCGI

Order allow,deny

Allow from all

Deny from env=no_access


#
# localhost에서는 지역 시스템 문서를 접근할 수 있도록 허용한다.
# web browser에서 문서를 보고 싶으면 아래의 주석을 풀어 주도록 한다.
#
# (레드햇 리눅스 6 설정으로부터 인용)
#
#Alias /doc /usr/doc
#
#order deny,allow
#deny from all
#allow from localhost
#Options Indexes FollowSymLinks
#


#
# PUT 방법에 의한 업로드를 허용할 것인지 아닌지 결정을 한다.
# 이 기능은 mod_put module을 dso로 설정을 해 놓아야지 가능하다.
#
Alias /upload /tmp


EnablePut On

AuthType Basic

AuthName "Upload Area"

AuthUserFile /etc/httpd/conf/passwd

EnableDelete Off

umask 007


require valid-user




#
# Redirect를 사용하면 서버의 이름공간에 존재했으나 현재에는 존재하지 않는
# 문서에 대하여 클라이언트에게 통보할 수 있도록 해준다. 이렇게 함으로써
# 위치가 변한 새로운 문서를 어디에서 찾을 수 있는지 클라이언트에게
# 알려줄 수 있다.
# 형식: Redirect 예전URI 새URI
#

#
# 서버가 생성하는 디렉토리 목록의 표시 상태를 제어하는 지시자.
#

#
# FancyIndexing은 예쁜 디렉토리 목록 또는 표준적인 디렉토리 목록 여부를
# 결정한다.
#
IndexOptions 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이란 명시적인 아이콘을 갖고 있지 않는 파일에 대한
# 기본 아이콘 파일을 설정한다.
#
DefaultIcon /icons/unknown.gif

#
# AddDescription은 서버 자동 생성 인덱스의 파일명 뒤에 간단한 설명을
# 넣을 때 사용한다. FancyIndexing을 사용할 때에만 보인다.
# 형식: AddDescription "설명" 화일명
#
AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive\\ .tgz

# META 태그를 사용하여 Content-type의 charset을 설정하지 않은
# 문서에 대하여 기본 문자셋을 iso-8859-1 로 해 버리는 패치에
# 대한 설정 (한글 사용을 위해서는 어쩌면 필요한 설정일지도
# 모른다. 일단 문제가 없으면 그냥 놔두는 것도 괜찮을지 모르겠지만
# 문제가 된다면 설정을 해보는 것도 괜찮을것 같다. 일단 나의 테스트
# 로는 euc-kr로의 설정은 문제가 발생한다. -- 패키저 주^^)
AddDefaultCharset Off
#AddDefaultCharset euc-kr

# IE6 의 개인정보 보호 정책에 의해 쿠키제어가 가능한 것을 막기위한
# P3P 규약값을 헤더에 지정

Header add P3P "CP='CAO PSA CONi OTR OUR DEM ONL'"


# IE 사용시에 UTF-8로 URL보내기 관련 옵션의 문제로 인하여
# url에서 한글이 제대로 지원이 되지 않는 문제를 위하여 사용


CheckURL On





# 이 기능을 사용하기 위해서는 상단의

# LoadModule gzip_module modules/mod_gzip.so

# AddModule mod_gzip.c

# 2 라인의 주석을 풀어줘야 한다.


# HTTP 압축 전송 사용여부 설정

mod_gzip_on Yes



# Transfer-encoding: chunked 제거여부.


# Yes - 제거

# No - 사용

mod_gzip_dechunk Yes


# browser 가 protocol 의 정보를 가지고 있지 않을 경우

# 처리할 최소 http protocol level.

# 1000 - HTTP/1.0

# 1001 - HTTP/1.1

mod_gzip_min_http 1001


# 압축을 할 최소 파일 사이즈(byte)

mod_gzip_minimum_file_size 300

# 압축을 할 최대 파일 사이즈(byte)

mod_gzip_maximum_file_size 0

# 압축을 할때 사용할 최대 메모리 사이즈(byte)

mod_gzip_maximum_inmem_size 100000


# 이미 전송한 파일의 보존여부

# Yes - 전송후 보존

# No - 전송후 삭제

mod_gzip_keep_workfiles No


# 압축 설정

# ARG1 - mime,handler,file,uri,reqheader,rspheader

# ARG2 - 압축을 할 item

mod_gzip_item_include file \\.html$

mod_gzip_item_include file \\.htm$

mod_gzip_item_include file \\.php$

mod_gzip_item_include mime ^text/.*

mod_gzip_item_include mime ^text/.html

mod_gzip_item_include mime ^text/html$

mod_gzip_item_include mime ^application/x-httpd-php

mod_gzip_item_include mime ^httpd/unix-directory$

mod_gzip_item_include handler ^perl-script$

mod_gzip_item_include handler ^server-status$

mod_gzip_item_include handler ^server-info$


# 압축에서 제외할 설정

# ARG1 - mime,handler,file,uri,reqheader,rspheader

# ARG2 - 압축에서 제외할 item

mod_gzip_item_exclude file \\.css$

mod_gzip_item_exclude file \\.js$

mod_gzip_item_exclude mime ^image/.*


# mod_gzip 이 작업을 할 임시 디렉토리. mod_gzip_keep_workfiles 을

# 설정했을 경우 이 파일들이 남아 있는 곳이기도 하다.

# Kernel 2.4 이상에서 shm 을 사용할 경우에는 /dev/shm 으로 지정을

# 한다. 최고 속도를 얻고 싶을 경우에는 RAM disk 를 지정한다.

mod_gzip_temp_dir /tmp


#
# ReadmeName은 서버가 디렉토리 목록 뒤에 내용을 덧붙여 넣을 README 파일의
# 이름을 설정한다.
#
# HeaderName은 디렉토리 인덱스 앞에 내용을 덧붙일 파일명을 설정한다.
#
# 서버는 먼저 name.html을 찾고 그것이 있으면 그 내용을 포함한다.
# 만약 없다면 서버는 name.txt 파일을 찾고 평범한 텍스트 내용으로
# 추가한다.
#
ReadmeName README
HeaderName HEADER

#
# IndexIgnore는 디렉토리 인덱싱에 있어 목록에서 제외시킬 파일명을 설정한다.
# 쉘 스타일의 와일드 카드를 사용할 수 있다.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

#
# AddEncoding은 특정 브라우져(모자익/X 2.1+)로 하여금 자료를 받으면서
# 정보의 압축을 풀 수 있도록 해준다. 주의: 모든 브라우져가 이 기능을
# 지원하는 것은 아니다. 이름이 유사하기는 하지만 다음부터 나오게 될
# Add로 시작하는 지시자들은 FancyIndexing과는 관련이 없다.
#
AddEncoding x-compress Z
AddEncoding x-gzip gz


#
# AddLanguage는 문서의 언어를 명시한다. 내용 협상 과정을 통해 브라우져가
# 이해할 수 있는 언어의 문서를 제공하는 것이 가능하다.
# 접미어(suffix)는 언어 키워드와 꼭 같은 필요는 없다. 예를 들어
# 폴란드어(Polish)로 된 문서는 네트웍 표준 언어 코드가 pl 이지만
# 펄 스크립트와 확연히 구별하기 위해 "AddLanguage pl .po"라고 사용한다.
#
AddLanguage ko .ko
AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it

#
# LanguagePriority는 내용 협상 중 동점이 발생하는 경우 언어 우선권을
# 부여한다. 언어의 우선권을 내림차순으로 나열하면 된다.
#
LanguagePriority ko en fr de


#
# AddType를 사용하면 mime.types 파일 수정없이 MIME 설정을 할 수 있고
# 또는 어떤 파일들에 대하여 특정 타입으로 처리하도록 할 수 있다.
#
# php4 module이 설치 되어 있을 경우 아래의 설정에 의해 사용이 가능
# 하도록 한다.

AddType application/x-httpd-php .php .php3 .phtml .ph .ins
AddType application/x-httpd-php-source .phps


#
# AddHandler를 사용하면 특정 파일 확장자와 "처리기"를 연결하거나
# 특정 파일 타입에 특정 동작(action)을 연결할 수 있다.
# 서버에 내장되어 있거나 또는 Action 명령을 사용하여 추가할 수
# 있다.(아래 참고)
#
# 서버 측 포함(SSI) 또는 ScriptAlias 처리된 디렉토리 외부에
# 존재하는 CGI 스크립트를 사용하고 싶을 때는 다음 내용의
# 주석을 없앤다.
#
# CGI 스크립트를 사용하기 위해:
#
#AddHandler cgi-script .cgi

#
# 서버 처리 HTML 파일 사용하기 위해:
#
AddType text/html .shtml
AddType text/html .htm
AddHandler server-parsed .shtml
# .html 확장자에서 SSI를 사용가능 하게 한다.
#AddHandler text/x-server-parsed-html .html

#
# 아파치의 send-asis HTTP 파일 기능을 사용하려면...
#


AddHandler send-as-is asis



#
# 서버 처리 이미지 맵 파일을 사용하려면...
#


AddHandler imap-file map


#
# type map을 사용하려면...
#
#AddHandler type-map var

# perl 모듈을 사용하기 위한 설정
#


Alias /perl/ /var/www/perl/



SetHandler perl-script

PerlHandler Apache::Registry

Options +ExecCGI



#
# Action을 사용하면 매칭되는 파일이 호출될 때마다 그 미디어 타입에 맞는
# 스크립트를 시행시킬 수 있다. 빈번하게 사용되는 CGI 파일 프로세서에
# 대하여 반복적으로 URL을 사용하지 않아도 된다.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#

#
# MetaDir: 아파치 서버가 메타 정보 파일을 찾을 디렉토리 이름.
# 이 파일에는 문서를 보낼 때 추가하고자 하는 추가 HTTP 헤더 정보가
# 들어있다.
#
#MetaDir .web

#
# MetaSuffix: 메타 정보를 담고 있는 파일의 접미어를 설정한다.
#
#MetaSuffix .meta

#
# 사용자 정의 에러 반응 메시지 (아파치 스타일)
# 다음 3 가지 방법으로 가능하다.
#
# 1) 보통의 텍스트
#ErrorDocument 500 "The server made a boo boo.
# 주목: " 표시는 텍스트임을 알려주는 것으로서 그 자체는 출력되지 않는다.
#
# 2) 지역적인 방향 전환
#ErrorDocument 404 /missing.html
# 지역적 URL인 /missing.html로 방향 전환하기
#ErrorDocument 404 /cgi-bin/missing_handler.pl
# 주목: 스크립트나 SSI로 방향 전환시킬 수 있다.
#
# 3) 외부 방향 전환
#ErrorDocument 402 http://some.other_server.com/subscription_info.html
# 주목: 원래 요청과 관련있는 환경 변수의 상당수가 스크립트에
# 전달되지 못한다는 점을 알고 있어야 한다.

#
# 다음 지시자는 보통의 HTTP 반응 방식을 수정한다.
# 첫번째 것은 네스케이프 2.x 또는 그를 흉내내는 브라우져에 대하여
# KeepAlive 기능을 쓰지 않도록 한다. 이 브라우져들은 KeepAlive 구현에
# 문제점을 갖고 있기 때문이다.
# 두번째 것은 HTTP/1.1을 잘못 구현하였고 301 또는 302 (redirect) 응답에
# 대하여 KeepAlive를 제대로 지원하지 못하는 마이크로소프트 인터넷
# 익스플로러 4.0b2를 위한 것이다.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

#
# 다음은 기본적인 1.1 응답도 제대로 처리하지 못함으로써 HTTP/1.1 스펙을
# 위반하고 있는 브라우져에 대하여 HTTP/1.1 응답을 하지 않도록 한다.
#
BrowserMatch "RealPlayer 4\\.0" force-response-1.0
BrowserMatch "Java/1\\.0" force-response-1.0
BrowserMatch "JDK/1\\.0" force-response-1.0

#
# 다음은 WebZIP, Teleport 등의 긁어가기 program을 막기 위한 설정
# 이다.

BrowserMatchNoCase "WebZIP" no_access
BrowserMatchNoCase "Teleport" no_access
BrowserMatchNoCase "NamoWebEditor" no_access
BrowserMatchNoCase "WebTrack-HTTPP" no_access
BrowserMatchNoCase "WebSymmetrix" no_access
BrowserMatchNoCase "AD2000" no_access
BrowserMatchNoCase "WebSpy" no_access
BrowserMatchNoCase "WebStripper" no_access
BrowserMatchNoCase "WebSnatcher" no_access
BrowserMatchNoCase "WebGet" no_access

#
# http://servername/server-status을 통해 서버 상태 보고를 허용한다.
# 여기서 "localhost" 부분을 허용할 도메인으로 바꿔 사용하라.
#


SetHandler server-status

Order deny,allow

Deny from all

Allow from localhost

# Allow from all

# AuthName "administrator Area"

# Authtype Basic

# AuthUserFile /var/www/.htpasswd

# AuthGroupFile /dev/null

# require valid-user

# satisfy all


#
# http://servername/server-info를 통하여 원격 서버 설정 보고를 허용한다.
# (mod_info.c가 적재되어 있어야 한다.)
# 여기서 "localhost" 부분을 허용할 도메인으로 바꿔 사용하라.
#


SetHandler server-info

Order deny,allow

Deny from all

Allow from localhost

# Allow from all

# AuthName "administrator Area"

# Authtype Basic

# AuthUserFile /var/www/.htpasswd

# AuthGroupFile /dev/null

# require valid-user

# satisfy all


#
# 1.1 버전 이전의 오래 된 버그를 악용하려는 사람들이 있다는 보고를 받았다.
# 이 버그는 아파치 일부분으로 제공한 CGI 스크립트와 연관있다.
# 이 부분의 주석 처리를 없애면 이 버그를 악용하는 공격이 있을 때
# phf.apache.org 상의 기록 스크립트로 방향 전환시킬 수 있다.
# 또는 support/phf_abuse_log.cgi 스크립트를 사용하여 여러분 직접 기록할
# 수도 있다.
#


Deny from all

ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi


#
# 프록시 서버 지시자. 프록시 서버 기능을 작동시키려면 다음 행의
# 주석을 해제시켜준다.
#
#
#ProxyRequests On
#
#
# Order deny,allow
# Deny from all
# Allow from .your_domain.com
#

#
# HTTP/1.1 "Via:" 헤더를 처리할 것인지 여부를 결정한다.
# ("Full"은 서버 버전을 포함하고 "Block"은 나가는 모든 자료에서
# Via: 헤더를 제거한다.)
# Off | On | Full | Block 중 하나의 값을 지정한다.
#
#ProxyVia On

#
# 캐쉬 기능도 사용하기 위해서는 다음 행의 주석을 풀어준다:
# (CacheRoot가 없으면 캐쉬하지 않음)
#
#CacheRoot "/var/www/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com

#
# 프록시 설정 끝

##################################################
### 섹션 3: 가상 호스트
#
# VirtualHost: 여러분의 리눅스 박스에 여러 개의 도메인/호스트이름을
# 관리하고 싶다면 각각에 대하여 VirtualHost 컨테이너를 설정한다.
# 가상 호스트를 설정하기에 앞서 자세한 설명을
# 에 들러 읽어보기 바란다.
# 가상 호스트 설정 내용을 점검해보기 위해서는 아파치를 실행할 때
# 명령행 옵션으로 '-S'를 사용한다.

#
# 이름 기반의 가상 호스트를 사용하려면 사용할 IP 주소 (최소 1 개,
# 그리고 포트 번호)를 정의해주어야 한다.
#
# 경고 : 아파치 1.2.x 버전에서만 가상 호스트 기능을 사용해 온 관리자들은
# 아파치 1.3.x 버전에서 NameVirtualHost 지시자로 IP 주소를
# 해주어야만 가상 호스트가 제대로 동작한다는 사실을 꼭 알아야 한다!!!
# 1.2 버전을 쓰다 1.3 버전으로 와서 가상 호스트가 동작하지 않는
# 문제의 99% 는 바로 NameVirtualHost 설정에 있다.
#
#
#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78

#
# 가상 호스트 예제:
# 거의 모든 아파치 지시자가 VirtualHost 컨테이너에 올 수 있다.
#
#
# ServerAdmin webmaster@host.some_domain.com
# DocumentRoot /www/docs/host.some_domain.com
# ServerName host.some_domain.com
# ErrorLog logs/host.some_domain.com-error_log
# CustomLog logs/host.some_domain.com-access_log common
#

#
#

# http://domain.com/~idhttp://id.domain.com 으로 전환하는 rule.
# domain.com 을 자신의 domain으로 수정하면 됨. 단 주의 할것은 계정
# 이 아닌 name based virtual host가 존재할 경우에는 name based 가상
# 호스트들의 설정은 이것 보다 상위에 설정이 되어야 함.
#
#
#ServerName domain.com
#ServerAlias *.domain.com
# # http://domain.com/~id -> http://id.domain.com 으로 변환
# RewriteEngine on
# RewriteCond %{HTTP_HOST} ^[^.]+\\.domain\\.com$
# RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
# RewriteRule ^([^.]+)\\.domain\\.com(.*) /home/member/$1/htdocs$2
#

관련자료

등록된 댓글이 없습니다.
Today's proverb
누구나 잘못할 수는 있지만 누구나 솔직할 수 있는 것은 아닙니다. 그러나 진실한 사람의 아름다움은 무엇과도 바꿀 수 없습니다. 솔직함은 겸손이고 두려움 없는 용기입니다. 잘못으로 부서진 것을 솔직함으로 건설한다면 어떤 폭풍에도 견뎌낼 수 있는 강인함이 있습니다. 가장 연약한 사람이 솔직할 수 있으며 가장 여유로운 사람이 자신의 모습을 볼 수 있고 자신을 아는 사람만이 자신을 드러낼 수 있습니다.