블로그 > 상큼한자유 http://blog.naver.com/innko/21056108 | |
############################################################# # # 문제가 발생했을 때에는 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 # => standlone타입과 inetd타입이 있으나 클라아언트의 요구에 신속한 반응을 #위해서는 standalone모드를 권장합니다. # # 서버 루트(ServerRoot) : 서버의 설정 파일, 에러 파일, 로그 파일이 # 기록되는 디렉토리의 최상위 경로명. # # 주의! 만약 서버 루트를 NFS (또는 기타 네트웍 파일 시스템) 마운트된 # 곳에 두고자 한다면 LockFile 문서를 꼭 읽어보아야 한다. # (<URL:http://www.apache.org/docs/mod/core.html#lockfile>;); # 문서를 읽고 나면 앞으로 닥칠 지 모르는 몇 가지 문제점을 피할 수 있다. # # 디렉토리 경로 뒤에 슬래쉬(/) 문자를 쓰지 않는다!!! # ServerRoot "/etc/httpd" # => 웹서버에 관련된 환경설정 파일과 에러,로고파일들이 존재하는 위치 # 주의:디레토리의 마지막에 / 를 붙이지 말것 # # LockFile 지시자는 아파치를 USE_FCNTL_SERIALIZED_ACCEPT 또는 # USE_FLOCK_SERIALIZED_ACCEPT 옵션을 주고 컴파일한 경우, 잠금 파일을 # 경로를 지정할 때 사용한다. 이 지시자 값은 일반적으로 기본값이 # 되도록 놔둔다. 이 값을 바꾸는 경우는 로그 디렉토리가 NFS 마운트된 # 곳에 있는 경우로서 잠금 파일은 항상 네트웍 파일 시스템이 아닌 # 로컬 디스크에 저장되어야 하기 때문이다. 주 서버 프로세서의 PID 값이 # 자동으로 파일 이름 뒤에 붙는다. # LockFile /var/lock/httpd.lock # # PidFile: 서버가 시동될 때 자신의 프로세스 고유 번호를 기록할 파일 # PidFile /var/run/httpd.pid # # ScoreBoardFile: 내부 서버 프로세스 정보를 기록하는데 사용하는 파일. # 모든 아키텍쳐에서 꼭 필요한 것은 아니다. 하지만 필요하다고 생각하는 # 경우에는 하나의 아파치 프로그램을 두 번 이상 실행시키는 경우 값이 # 중복되지 않도록 해주는 것만 잊지 않으면 된다. # ScoreBoardFile /var/run/httpd.scoreboard # # 표준 설정에서 서버는 httpd.conf, src.conf, access.conf 파일을 # 차례대로 읽어나간다. 나중에 있는 2 개의 파일은 현재 아무 내용도 # 없는 빈 상태로 배포되고 있다. 왜냐하면 모든 지시자를 그냥 하나의 # 파일에 적는 것이 더욱 명료하기 때문이다. 주석으로 처리되어 있는 # 값은 기본값이다. 서버가 이 파일 내용을 무시하도록 하기 위해서는 # "/dev/null" (유닉스의 경우) 또는 "nul" (Win32) 값을 지정한다. # #ResourceConfig conf/srm.conf #AccessConfig conf/access.conf # # Timeout: 받기/보내기 타임 아웃 시간 # 웹 브라우저에게 타임아웃 신호를 보낸 때까지의 기다리는 시간 (단위: 초) # Timeout 300 # KeepAlive: 지속성(persistent) 접속을 허가할 것인가 말 것인가? => 한번 연결에 대하여 한번이상의 요청을 허용할 것인가 아닌가의 여부 # (한 번의 접속에서 여러 개의 요청을 처리할 것인가 여부) # 허가하지 않기 위해서는 "Off"로 설정한다. # 허가하지 않는 것과 허가하는 것과의 효율 차이는 매우 크다. # KeepAlive On # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests 100 # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 15 # # Server-pool size regulation. Rather than making you guess how many # server processes you need, Apache dynamically adapts to the load it # sees --- that is, it tries to maintain enough server processes to # handle the current load, plus a few spare servers to handle transient # load spikes (e.g., multiple simultaneous requests from a single # Netscape browser). # # It does this by periodically checking how many servers are waiting # for a request. If there are fewer than MinSpareServers, it creates # a new spare. If there are more than MaxSpareServers, some of the # spares die off. The default values are probably OK for most sites. # MinSpareServers 5 MaxSpareServers 20 # # Number of servers to start initially --- should be a reasonable ballpark # figure. # StartServers 5 # # Limit on total number of servers running, i.e., limit on the number # of clients who can simultaneously connect --- if this limit is ever # reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW. # It is intended mainly as a brake to keep a runaway server from taking # the system with it as it spirals down... # MaxClients 150 # # MaxKeepAliveRequests: 지속성 접속 기간 동안 처리할 수 있는 최대 요청 갯수 # 0 을 넣으면 무한대이다. 높은 성능을 내기 위해서 높은 값을 추천한다. # MaxRequestsPerChild 1000 # # Listen: 아파치를 기본값 이외에도 특정 IP 주소 또는 포트에 연결하도록 # 해준다. <VirtualHost> 지시자도 참고하라. # #Listen 3000 #Listen 12.34.56.78:80 Listen 80 # # BindAddress: 이 옵션을 사용하여 가상 호스트를 지원할 수 있다. # 이 지시자를 이용하여 서버가 귀기울일 IP 주소를 지시할 수 있다. # "*", IP 주소, 또는 완전한 인터넷 도메인 이름을 사용할 수 있다. # <VirtualHost>, Listen 지시자도 참고하라. # #BindAddress * #=> 가상 호스트, 즉 실제 리얼 IP 한 개에 여러개의 도메인 네임을 #등록시킬 경우 ( 이방법으로 호스팅 사업을 하는 사업체가 많다.) #자세한 것은 맨아래 <VirtualHost> 부부을 참고하십시요. #버츄얼 호스트를 하실려면 #을 삭제하십시요. # #동적 공유 객체(Dynamic Shared Object, DSO) 지원 # # DSO 방식으로 만들어진 모듈의 기능을 사용하기 위해서는 그 기능에 관련된 # 지시자를 사용하기에 앞서 알맞게 `LoadModule' 지시자로 모듈을 # 지시해주어야 한다. DSO 작동방식에 대하여 자세히 알고 싶은 사람은 # 아파치 1.3 배포 파일의 README.DSO 를 읽어보라. 여러분이 갖고 있는 # httpd 바이너리에 내장된(정적으로 링크되어 항상 사용가능한) 모듈 목록을 # 알고 싶을 때에는 `httpd -l' 명령을 실행한다. # *주의* 모듈을 적재하는 순서는 매우 중요하다. 전문가의 조언 없이 # 아무렇게나 순서를 바꾸지 말라. # # 예 : # LoadModule foo_module modules/mod_foo.so # # 모듈 관련 문서는 HTML 형식으로 "/home/httpd/manual/mod" 에 놓아두었다. # # *주의* LoadModule 설정을 하나라도 바꾸었다면 LoadModule 설정 뒤에 따라 # 나오는 AddModule 설정도 똑같이 바꾸어주기 바란다. # #LoadModule mmap_static_module modules/mod_mmap_static.so LoadModule vhost_alias_module modules/mod_vhost_alias.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 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 db_auth_module modules/mod_auth_db.so #LoadModule digest_module modules/mod_digest.so #LoadModule proxy_module modules/libproxy.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 # # 다음 모듈은 아파치 펄 모듈로서 CGI 스크립트로 펄을 많이 사용하는 # 사람들에게 펄 코드 실행 속도의 향상을 가져다 줍니다. # # 주의 : 설정을 바꾼 후 한 가지 할 일이 더 있다. # <Location /perl> ... </Location> # 위와 같은 설정을 찾아서 펄 스크립트를 사용할 수 있는 # 디렉토리를 설정해주어야 한다. # <IfDefine HAVE_PERL> LoadModule perl_module modules/libperl.so </IfDefine> # # 확장 모듈 # <IfDefine HAVE_PHP> LoadModule php_module modules/mod_php.so </IfDefine> # # 다음 모듈은 MySQL 데이터베이스와 더불어 서버 스크립팅 언어로 인기를 # 누리고 있는 PHP3 모듈입니다. # <IfDefine HAVE_PHP3> LoadModule php3_module modules/libphp3.so </IfDefine> <IfDefine HAVE_PHP4> LoadModule php4_module modules/libphp4.so </IfDefine> <IfDefine HAVE_DAV> LoadModule dav_module modules/libdav.so </IfDefine> <IfDefine HAVE_ROAMING> LoadModule roaming_module modules/mod_roaming.so </IfDefine> <IfDefine HAVE_SSL> LoadModule ssl_module modules/libssl.so </IfDefine> # # 모듈 실행 순서를 정확하게 하기 위해 사용 가능한 모듈(정적 또는 공유 # 모듈 포함)로부터 완전한 목록을 다시 만들어 둔 것이다. # [LOADMODULE 섹션을 하나라도 수정했다면 이 부분도 역시 알맞게 수정하라] # ClearModuleList #AddModule mod_mmap_static.c AddModule mod_vhost_alias.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_alias.c AddModule mod_rewrite.c AddModule mod_access.c AddModule mod_auth.c AddModule mod_auth_anon.c AddModule mod_auth_db.c #AddModule mod_digest.c #AddModule mod_proxy.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 <IfDefine HAVE_PERL> AddModule mod_perl.c </IfDefine> <IfDefine HAVE_PHP> AddModule mod_php.c </IfDefine> <IfDefine HAVE_PHP3> AddModule mod_php3.c </IfDefine> <IfDefine HAVE_PHP4> AddModule mod_php4.c </IfDefine> <IfDefine HAVE_DAV> AddModule mod_dav.c </IfDefine> <IfDefine HAVE_ROAMING> AddModule mod_roaming.c </IfDefine> <IfDefine HAVE_SSL> AddModule mod_ssl.c </IfDefine> # # 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 # => 웹서버의 포트번호 (아파치 웹서버는 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 nobody Group nobody # => 웹서바를 실행할 때 소유권을 갖는 사용자와 그룹 # * 주의 : 사용자와 그릅을 root로 하면 보안상 위험! # # ServerAdmin: 서버에 문제가 발생했을 때 메일을 보낼 메일 주소. # 이 주소는 예를 들어 에러 문서와 같이 서버가 생성하는 페이지에 # 나타날 것이다. # ServerAdmin admin@yourdomain.co.kr # # ServerName은 클라이언트 프로그램에게 돌려주는 서버 이름이 다른 경우 # 호스트 이름을 설정할 수 있게 해준다. (예를 들어, 호스트의 실제 이름이 # 아닌 'www'를 사용하도록 하는데 사용할 수 있다.) # # 주의: 호스트 이름을 아무렇게나 만들어선 안된다. 이 이름은 여러분의 # 호스트에 주어진 타당한 DNS 이름이어야 한다. 잘 모르겠으면 네트웍 # 관리자에게 문의하라. # 호스트가 등록된 DNS 이름을 갖고 있지 않는 경우에는 이 곳에 IP 주소를 # 적는다. 어찌 되었든 IP 주소를 사용하여(예를 들어 http://123.45.67.89/) # 접속할 수 있다. 이런 식으로 해서 리다이렉션이 작동하도록 할 수 있다. # #ServerName localhost # # DocumentRoot: 제공할 문서의 상위 디렉토리. # 기본적으로 모든 요청은 이 디렉토리로부터 처리된다. 하지만 # 심볼릭 링크나 앨리어스(alias)를 사용하여 다른 위치를 가리키도록 # 할 수 있다. # DocumentRoot "/var/www/html" # 와우리눅스 까치버젼은 "/var/www/html" # # Each directory to which Apache has access, can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories). # # First, we configure the "default" to be a very restrictive set of # permissions. # <Directory /> Options FollowSymLinks AllowOverride None </Directory> # # Note that from this point forward you must specifically allow # particular features to be enabled - so if something's not working as # you might expect, make sure that you have specifically enabled it # below. # # # 다음 내용은 여러분이 설정한 DocumentRoot 값으로 변경해서 사용한다. # <Directory "/var/www/html"> # => 브라우저에서 도메인 주소를 쳤을 경우 index.html파일이 위치하는 디렉토리 # # 다음 값에는 "None", "All", 또는 "Indexes : index.html이 없을 경우 # 디렉토리를 보여 줄 것인지를 결정", "Includes : 서버측의 SSI를 허용할 것인지를 결정", # "FollowSymLinks : 서버가 디렉토리의 심볼릭 링크를 따를 것인가를 결정" # "ExecCGI :cgi프로그램을 실행 시킬건질 결정", "MultiViews"의 자유로운 조합이 # 가능하다. # # "MultiViews" 만큼은 "Options All"을 사용한다 할 지라도 명시적으로 # 적어야만 작동한다는 사실을 알아두자. # Options Indexes Includes FollowSymLinks # # 다음은 각 디렉토리에 위치한 .htaccess 파일에서 어떤 옵션을 # 마음대로 제어할 수 있는지 결정한다. # "All" 또는 "Options", "FileInfo", "AuthConfig", "Limit"의 자유로운 # 결합이 가능하다. # AllowOverride None # # 서버로부터 자료를 얻어갈 수 있는 위치를 제어한다. # #Order allow,deny # > CGI를 실행시킬려면 #표시하여야 함 Allow from all </Directory> # # UserDir: ~user 요청을 받았을 때 사용자의 홈 디렉토리 뒤에 추가할 # 디렉토리 이름. # # # 주의 : 알짜 리눅스 시스템에서는 사용자가 자신의 홈 디렉토리에 public_html # 디렉토리를 만들어도 외부에서 홈 페이지를 볼 수 없다. # 왜냐하면 각 계정 홈 디렉토리에 대한 보안을 중요하게 생각했기 때문에 # 홈 디렉토리에 대하여 사용자 계정과 사용자 자신의 그룹 이외에는 # 아무런 접근 허가권도 갖고 있지 않기 때문이다. => # 초기의 계정 디렉토리의 퍼미션은 644입니다. # # 개인 홈 디렉토리를 가질 사람은 chmod a+x ~ 명령을 일단 실행해주어 # (보통) nobody 권한의 아파치 프로세스가 홈 디렉토리에 접근할 수 # 있도록 허가해주어야 한다. # 물론 public_html과 홈 페이지 파일에 대하여 모든 사용자가 최소한 # 읽기 권한은 갖도록 설정해주어야 한다. # UserDir public_html www web htdocs # # UserDir 디렉토리에 대한 접근을 제어한다. 다음은 사용자 홈 페이지에 # 대하여 읽기만 가능하도록 한 예제 설정 내용이다. 참고 자료로 # 사용하기 바란다. # #<Directory /home/*/public_html> # =>글<Directory "/home/httpd/html">을 참조하세요! # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Options Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI # <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> # # DirectoryIndex: 준비된 HTML 디렉토리 인덱스로 사용할 파일이나 # 파일 목록의 이름을 나열한다. 여러 개를 나열할 때는 스페이스로 # 구분한다. DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi # => 브라우저가 맨처음 홈페이지 디렉토리에서 찾을 파일 # # AccessFileName: 디렉토리에 대하여 접근 제어 정보 내용을 # 담고 있을 파일 이름 # AccessFileName .htaccess # # 다음 행은 웹 브라우져가 .htaccess 파일을 접근할 수 없도록 하는 # 설정이다. .htaccess에는 인증 정보가 들어있는 경우가 빈번하므로 # 보안 상 이유로 이 파일에 대한 접근은 불허해야 한다. # 웹 방문객들이 이 파일을 보게 하고 싶으면 다음 행들을 주석 처리하라. # 만약 AccessFileName 설정을 다른 파일명으로 바꾸었다면 알맞게 # .htaccess를 그 이름으로 바꾸어준다. # <Files ~ "^.ht"> Order allow,deny Deny from all </Files> # # 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을 추가해야 한다. 그렇기 때문에 <IfModule> 컨테이너에 # 포함되어 있는 것이다. 다음 설정은 모듈이 서버에 포함되어 있을 때에만 # MIMEMagicFile 지시자를 처리하도록 해준다. # <IfModule mod_mime_magic.c> MIMEMagicFile /usr/share/magic </IfModule> # # HostNameLookups: 클라이언트의 이름 또는 IP 주소만을 기록할 지 여부. # 예를 들어 www.apache.org (on) 또는 204.62.129.132 (off) # 기본값이 off 인 이유는 각 클라이언트 요청이 올 때마다 최소한 1 번 # 이상의 네임 서버 요청이 발생하기 때문이다. 그러나 꼭 필요한 경우에는 # 이 기능을 켜둔다. # HostnameLookups Off # => 이 기능을 켜두면 단 몇 달 사이에 로그 파일일이 엄청나게 불어난다. # # ErrorLog: 에러 기록 파일의 위치. # <VirtualHost> 컨테이너 안에서 ErrorLog 설정을 하지 않으면 # 그 가상 호스트에 관련된 에러 메시지도 역시 이 곳에 기록된다. # <VirtualHost> 컨테이너 안에서 에러 로그 파일을 정의하면 # 관련된 에러 메시지는 그 파일로 저장된다. # ErrorLog /var/log/httpd/error_log # # LogLevel: error_log에 기록될 메시지 분량을 제어한다. # debug, info, notice, warn, error, crit, 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 # # 접근 로그 파일의 위치와 형식(공통 로그파일 형식) # <VirtualHost> 컨테이너 안에서 접근 로그파일 설정을 하지 않으면 # 모든 기록이 이 파일에 남게 된다. 이와 반대로 각 <VirtualHost> 마다 # 접근 로그파일을 정의하면 모든 처리가 바로 그 파일에 기록된다. # CustomLog /var/log/httpd/access_log common # => 가상 호스트 각 도메인 디렉토리내에 로그파일을 두려 할경우 # # 에이전트 로그파일과 참조자(referer) 로그파일을 갖기 위해서는 # 다음 지시 내용의 주석 처리를 해제하라. # # 여기서 에이전트란 여러분의 사이트에 방문하는 브라우져를 말한다. # 에이전트 로그를 남기면 여러분의 사이트에 방문하는 브라우져의 종류에 대한 # 통계를 낼 수 있다. # # 참조자란 주로 배너 광고주에게 중요한 것으로서 여러분의 사이트 바로 # 직전에 방문한 사이트를 말한다. # #CustomLog /var/log/httpd/referer_log referer #CustomLog /var/log/httpd/agent_log agent # # 하나의 로그파일에 접근, 에이전트, 참조자 정보를 다 저장하기 위해서는 # (통합 로그파일 형식) 다음 지시 내용을 사용하라. # # 몇 달만 운영해도 접속이 많은 사이트에서는 combined 로그 파일이 어마어마하게 # 커져서 루트 파일 시스템을 꽉 채워 버리는 일이 발생할 수 있다! # #CustomLog /var/log/httpd/access_log combined # # 부차적으로 서버가 생성하는 페이지(에러 문서, FTP 디렉토리 목록, # mod_status, mod_info 출력 등, 그러나 CGI 생성 문서는 제외)에 # 서버 버전과 가상 호스트 이름을 포함하는 행을 추가하도록 한다. # "Email"로 설정하면 ServerAdmin으로의 mailto: 링크를 포함한다. # On | Off | EMail 중 하나로 설정한다. # ServerSignature On # # Aliases: 필요한 만큼의 별칭을 만들어 사용한다.(제한 없음) # 홈페이지의 링크와 같다면 비유가 될까 ?..... 형식은 다음과 같다. # Alias 가짜이름 실제이름 # # 가짜 이름 뒤에 / 를 포함하면 아파치 서버는 URL에도 / 이 있어야 # 처리함을 잘 알아두자. 따라서 "/icons"는 별칭 처리되지 않고 # "/icons/"만 별칭 처리된다. # Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> # # ScriptAlias: 서버 스크립트를 포함하는 디렉토리를 제어한다. # ScriptAlias는 근본적으로 Alias와 같으나 가리키고 있는 실제 디렉토리 # 안에 들어있는 문서를 실행 프로그램으로 취급하여 실행한다. # 맨 뒤에 붙는 "/" 에 대한 규칙은 Alias와 마찬가지이다. # ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" # => 특정 디렉토리에서만 CGI스크립트가 실행 되길 원할 경우 <Directory /home/*> Options ExecCGI Includes Indexes FollowSymLinks </Directory> # # "/home/httpd/cgi-bin" 부분은 ScriptAlias로 별칭 처리된 실제 CGI # 디렉토리로 설정해야 한다. # <Directory "/var/www/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> # # 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 # # 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 tgz <IfModule mod_negotiation.c> # # 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 en fr de </IfModule> # # AddType를 사용하면 mime.types 파일 수정없이 MIME 설정을 할 수 있고 # 또는 어떤 파일들에 대하여 특정 타입으로 처리하도록 할 수 있다. # # php4 module이 설치되었을 경우 아래의 설정에 의해 사용을 할수 있도 # 록 한다. # <IfModule mod_php4.c> AddType application/x-httpd-php .php4 .php3 .phtml .php AddType application/x-httpd-php-source .phps </IfModule> # php3의 경우 <IfModule mod_php3.c> AddType application/x-httpd-php3 .php3 AddType application/x-httpd-php3-source .phps </IfModule> # 다음은 PHP/FI (PHP2)를 위한 것입니다. <IfModule mod_php.c> AddType application/x-httpd-php .phtml </IfModule> AddType application/x-tar .tgz # # AddHandler를 사용하면 특정 파일 확장자와 "처리기"를 연결하거나 # 특정 파일 타입에 특정 동작(action)을 연결할 수 있다. # 서버에 내장되어 있거나 또는 Action 명령을 사용하여 추가할 수 # 있다.(아래 참고) # # 서버 측 포함(SSI) 또는 ScriptAlias 처리된 디렉토리 외부에 # 존재하는 CGI 스크립트를 사용하고 싶을 때는 다음 내용의 # 주석을 없앤다. # # CGI 스크립트를 사용하기 위해: # AddHandler cgi-script .cgi .pl # # 서버 처리 HTML 파일 사용하기 위해: # AddType text/html .shtml AddType text/html .htm AddHandler server-parsed .shtml # # 아파치의 send-asis HTTP 파일 기능을 사용하려면... # #AddHandler send-as-is asis # # 서버 처리 이미지 맵 파일을 사용하려면... # AddHandler imap-file map # # type map을 사용하려면... # #AddHandler type-map var # # # perl 모듈을 사용하기 위한 설정 # <IfModule mod_perl.c> Alias /perl/ /home/httpd/perl/ <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options +ExecCGI </Location> </IfModule> # # 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로 방향 전환시킬 수 있다. # ErrorDocument 401 /401.html # ErrorDocument 403 /403.html # ErrorDocument 404 /404.html # ErrorDocument 500 /500.html # # # 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을 막기 위한 설정 이다. BrowserMatch "WebZIP" no_access BrowserMatch "Teleport" no_access BrowserMatch "Teleport Pro/1.29" no_access BrowserMatch "NamoWebEditor" no_access BrowserMatch "WebTrack-HTTPP" no_access BrowserMatch "WebSymmetrix" no_access # # perl 모듈을 사용하기 위한 설정 <IfModule mod_perl.c> Alias /perl/ /var/www/perl/ <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options +ExecCGI </Location> </IfModule> # # Allow http put (such as Netscape Gold's publish feature) # Use htpasswd to generate /etc/httpd/conf/passwd. # You must unremark these two lines at the top of this file as well: #LoadModule put_module modules/mod_put.so #AddModule mod_put.c # #Alias /upload /tmp #<Location /upload> # EnablePut On # AuthType Basic # AuthName Temporary # AuthUserFile /etc/httpd/conf/passwd # EnableDelete Off # umask 007 # <Limit PUT> # require valid-user # </Limit> #</Location> # # http://servername/server-status을 통해 서버 상태 보고를 허용한다. # 웹브라우저에서 아파치의 상태를 볼수 있게 하는 기능 # 여기서 "localhost" 부분을 허용할 도메인으로 바꿔 사용하라. # #<Location /server-status> # SetHandler server-status # Order deny,allow # Deny from all # Allow from .your_domain.com #</Location> # # http://servername/server-info를 통하여 원격 서버 설정 보고를 허용한다. # 마찬가지로 웹 브라우저에서 서버설정을 볼 수 있다. # (mod_info.c가 적재되어 있어야 한다.) # 여기서 "localhost" 부분을 허용할 도메인으로 바꿔 사용하라. # #<Location /server-info> # SetHandler server-info # Order deny,allow # Deny from all # Allow from .your_domain.com #</Location> # Allow access to local system documentation from localhost Alias /doc/ /usr/share/doc/ <Location /doc> order deny,allow deny from all allow from localhost Options Indexes FollowSymLinks </Location> # # 1.1 버전 이전의 오래 된 버그를 악용하려는 사람들이 있다는 보고를 받았다. # 이 버그는 아파치 일부분으로 제공한 CGI 스크립트와 연관있다. # 이 부분의 주석 처리를 없애면 이 버그를 악용하는 공격이 있을 때 # phf.apache.org 상의 기록 스크립트로 방향 전환시킬 수 있다. # 또는 support/phf_abuse_log.cgi 스크립트를 사용하여 여러분 직접 기록할 # 수도 있다. # <Location /cgi-bin/phf*> Deny from all ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi </Location> # # 프록시 서버 지시자. 프록시 서버 기능을 작동시키려면 다음 행의 # 주석을 해제시켜준다. # #<IfModule mod_proxy.c> #ProxyRequests On # #<Directory proxy:*> # Order deny,allow # Deny from all # Allow from .your_domain.com #</Directory> # # HTTP/1.1 "Via:" 헤더를 처리할 것인지 여부를 결정한다. # ("Full"은 서버 버전을 포함하고 "Block"은 나가는 모든 자료에서 # Via: 헤더를 제거한다.) # Off | On | Full | Block 중 하나의 값을 지정한다. # #ProxyVia On # # 캐쉬 기능도 사용하기 위해서는 다음 행의 주석을 풀어준다: # (CacheRoot가 없으면 캐쉬하지 않음) # #CacheRoot "/var/cache/httpd" #CacheSize 5 #CacheGcInterval 4 #CacheMaxExpire 24 #CacheLastModifiedFactor 0.1 #CacheDefaultExpire 1 #NoCache a_domain.com another_domain.edu joes.garage_sale.com #</IfModule> # # 프록시 설정 끝 # ############################################################# ### 섹션 3: 가상 호스트 => 실제 IP 주소 1개에 여러개의 도메인 네임을 등록시킬 때 # 예) 203.237.102.12라는 주소에 azim.co.kr 과 linux.co.kr 과 joayo.net등등 # 여러개의 도메인을 등록 시킬때. # # VirtualHost: 여러분의 리눅스 박스에 여러 개의 도메인/호스트이름을 # 관리하고 싶다면 각각에 대하여 VirtualHost 컨테이너를 설정한다. # 가상 호스트를 설정하기에 앞서 자세한 설명을 # <URL:http://www.apache.org/docs/vhosts/>;에 들러 읽어보기 바란다. # 가상 호스트 설정 내용을 점검해보기 위해서는 아파치를 실행할 때 # 명령행 옵션으로 '-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 컨테이너에 올 수 있다. # #<VirtualHost ip.address.of.www.yourdomain.com> # ServerAdmin admin@www.yourdomain.com # DocumentRoot /www/docs/www.yourdomain.com # ServerName host.yourdomain.com # ErrorLog logs/www.yourdomain.com-error_log # CustomLog logs/www.yourdomain.com-access_log common #</VirtualHost> #<VirtualHost _default_:*> #</VirtualHost> <IfDefine HAVE_SSL> ## ## SSL Virtual Host Context ## # Apache will only listen on port 80 by default. Defining the virtual server # (below) won't make it automatically listen on the virtual server's port. Listen 443 <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/var/www/html" # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on # SSL Cipher Suite: # List the ciphers that the client is permitted to negotiate. # See the mod_ssl documentation for a complete list. #SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL # Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. A test # certificate can be generated with `make certificate' under # built time. Keep in mind that if you've both a RSA and a DSA # certificate you can configure both in parallel (to also allow # the use of DSA ciphers, etc.) SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt #SSLCertificateFile /etc/httpd/conf/ssl.crt/server-dsa.crt # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key #SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server-dsa.key # Server Certificate Chain: # Point SSLCertificateChainFile at a file containing the # concatenation of PEM encoded CA certificates which form the # certificate chain for the server certificate. Alternatively # the referenced file can be the same as SSLCertificateFile # when the CA certificates are directly appended to the server # certificate for convinience. #SSLCertificateChainFile /etc/httpd/conf/ssl.crt/ca.crt # Certificate Authority (CA): # Set the CA certificate verification path where to find CA # certificates for client authentication or alternatively one # huge file containing all of them (file must be PEM encoded) # Note: Inside SSLCACertificatePath you need hash symlinks # to point to the certificate files. Use the provided # Makefile to update the hash symlinks after changes. #SSLCACertificatePath /etc/httpd/conf/ssl.crt #SSLCACertificateFile /etc/httpd/conf/ssl.crt/ca-bundle.crt # Certificate Revocation Lists (CRL): # Set the CA revocation path where to find CA CRLs for client # authentication or alternatively one huge file containing all # of them (file must be PEM encoded) # Note: Inside SSLCARevocationPath you need hash symlinks # to point to the certificate files. Use the provided # Makefile to update the hash symlinks after changes. #SSLCARevocationPath /etc/httpd/conf/ssl.crl #SSLCARevocationFile /etc/httpd/conf/ssl.crl/ca-bundle.crl # Client Authentication (Type): # Client certificate verification type and depth. Types are # none, optional, require and optional_no_ca. Depth is a # number which specifies how deeply to verify the certificate # issuer chain before deciding the certificate is not valid. #SSLVerifyClient require #SSLVerifyDepth 10 # Access Control: # With SSLRequire you can do per-directory access control based # on arbitrary complex boolean expressions containing server # variable checks and other lookup directives. The syntax is a # mixture between C and Perl. See the mod_ssl documentation # for more details. #<Location /> #SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ # and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." # and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} # and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 # and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) # or %{REMOTE_ADDR} =~ m/^192.76.162.[0-9]+$/ #</Location> # SSL Engine Options: # Set various options for the SSL engine. # o FakeBasicAuth: # Translate the client X.509 into a Basic Authorisation. This means that # the standard Auth/DBMAuth methods can be used for access control. The # user name is the `one line' version of the client's X.509 certificate. # Note that no password is obtained from the user. Every entry in the user # file needs this password: `xxj31ZMTZzkVA'. # o ExportCertData: # This exports two additional environment variables: SSL_CLIENT_CERT and # SSL_SERVER_CERT. These contain the PEM-encoded certificates of the # server (always existing) and the client (only existing when client # authentication is used). This can be used to import the certificates # into CGI scripts. # o StdEnvVars: # This exports the standard SSL/TLS related `SSL_*' environment variables. # Per default this exportation is switched off for performance reasons, # because the extraction step is an expensive operation and is usually # useless for serving static content. So one usually enables the # exportation for CGI and SSI requests only. # o CompatEnvVars: # This exports obsolete environment variables for backward compatibility # to Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.0 and Stronghold 2.x. Use this # to provide compatibility to existing CGI scripts. # o StrictRequire: # This denies access when "SSLRequireSSL" or "SSLRequire" applied even # under a "Satisfy any" situation, i.e. when it applies access is denied # and no other module can change it. # o OptRenegotiate: # This enables optimized SSL connection renegotiation handling when SSL # directives are used in per-directory context. #SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire <Files ~ ".(cgi|shtml)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> # Notice: Most problems of broken clients are also related to the HTTP # keep-alive facility, so you usually additionally want to disable # keep-alive for those clients, too. Use variable "nokeepalive" for this. SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown # Per-Server Logging: # The home of a custom SSL log file. Use this when you want a # compact non-error SSL logfile on a virtual host basis. CustomLog /var/log/httpd/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" </VirtualHost> </IfDefine> =============================================================== 출처 http://mfiles.naver.net/9d46a974673c51e2c197/data1/2004/4/26/57/httpd_conf.txt |
0