# 1) 문제가 발생했을 때에는 httpd.conf (srm.conf, access.conf) 설정 파일의
# 문법을 제대로 지켰는지 먼저 점검.
#
# /usr/sbin/httpd 명령에 -t 옵션을 주면 문법만 점검합니다.
#
# 예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’ ....
# 지시자는 3 개의 기본적인 섹션으로 묶여 있다:
#
# 1. 아파치 서버 프로세스의 전반적인 작동을 제어하는 지시자
# ('global environment, 전체 환경')
#
# 2. 가상 호스트에 의해 처리되지 않는 요청을 모두 처리하는 주 서버 또는
# 기본 서버의 작동을 제어하는 지시자. 이 지시자 내용은 모든 가상 호스트의 기본값이기도 하다.
# 3. 다른 IP 주소 또는 다른 호스트 이름에 대한 요청을 처리할 가상 호스트 설정
# 서버 유형(ServerType)은 inetd 또는 standalone 둘 중 하나이다.
# inetd 방식은 유닉스 플랫폼에서만 지원된다.
ServerType standalone
# 서버 루트(ServerRoot) : 서버의 설정 파일, 에러 파일, 로그 파일이
# 기록되는 디렉토리의 최상위 경로명.
# 디렉토리 경로 뒤에 슬래쉬(/) 문자를 쓰지 않는다!!!
ServerRoot "/etc/httpd"
# 표준 설정에서 서버는 httpd.conf, src.conf, access.conf 파일을
# 차례대로 읽어나간다. 나중에 있는 2 개의 파일은 현재 아무 내용도
# 없는 빈 상태로 배포되고 있다. 왜냐하면 모든 지시자를 그냥 하나의
# 파일에 적는 것이 더욱 명료하기 때문이다.
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
#
# Timeout: 받기/보내기 타임 아웃 시간
#
Timeout 300
# KeepAlive: 지속성(persistent) 접속을 허가할 것인가 말 것인가?
# (한 번의 접속에서 여러 개의 요청을 처리할 것인가 여부)
# 허가하지 않기 위해서는 "Off"로 설정한다.
# 허가하지 않는 것과 허가하는 것과의 효율 차이는 매우 크다.
KeepAlive On
# MaxKeepAliveRequests: 접속 기간 동안 처리할 수 있는 최대 요
# 청 개수 0 을 넣으면 무한대이다. 높은 성능을 내기 위해서 높은
# 값을 추천한다.
MaxKeepAliveRequests 100
# KeepAliveTimeout: 같은 접속 상태에서 같은 클라이언트의 요청이
# 타임 아웃되는 시간 (초 단위)
KeepAliveTimeout 15
# 아파치 서버는 주기적으로 몇 개의 서버가 요청 대기 상태인지 점검한
#다.
# 만약 MinSpareServers 보다 적다면 여유 서버 프로세스를 생성한다.
# 만약 MaxSpareServers 보다 많으면 불필요한 여유 프로세스를 제거한다.
MinSpareServers 8
MaxSpareServers 20
# 처음 시동할 때 만들 서버의 갯수 -- 합리적인 근사치여야 한다.
StartServers 10
# 서버 프로세스의 최대값, 즉 동시에 접속할 수 있는 클라이언트 갯수를
# 제한하는 값이다.
MaxClients 150
# MaxRequestsPerChild: 각 자식 프로세스가 죽기 전까지 처리할 수 있는
# 요청 갯수. 메모리 누출이나 자원 누출 방지
MaxRequestsPerChild 100
# Listen: 아파치를 기본값 이외에도 특정 IP 주소 또는 포트에 연결하도록
# 해준다. <VirtualHost> 지시자도 참고하라.
#Listen 3000
#Listen 12.34.56.78:80
# BindAddress: 이 옵션을 사용하여 가상 호스트를 지원할 수 있다.
# 이 지시자를 이용하여 서버가 귀기울일 IP 주소를 지시할 수 있다.
# <VirtualHost>, Listen 지시자도 참고하라.
#
#BindAddress *
# 동적 공유 객체(Dynamic Shared Object, DSO) 지원
# DSO 방식으로 만들어진 모듈의 기능을 사용하기 위해서는 그 기능에 관련
#된 지시자를 사용하기에 앞서 알맞게 `LoadModule' 지시자로 모듈을 지시
#해주어야 한다. DSO 작동방식에 대하여 자세히 알고 싶은 사람은 아파치
#1.3 배포 파일의 README.DSO 를 읽어보라. 여러분이 갖고 있는 httpd 바
#이너리에 내장된(정적으로 링크되어 항상 사용가능한) 모듈 목록을 알고 싶
#을 때에는 `httpd -l' 명령을 실행한다.
#
# 주의: 모듈을 적재하는 순서는 매우 중요하다. 전문가의 조언 없이
# 아무렇게나 순서를 바꾸지 말라.
#
# 모듈 관련 문서는 HTML 형식으로 "/home/httpd/manual/mod" 에 있음
# 주의: LoadModule 설정을 하나라도 바꾸었다면 LoadModule 설정 뒤에 따라 나오는 AddModule 설정도 똑같이 바꾸어주기 바란다.
LoadModule env_module modules/mod_env.so .....
# 아파치가 "매우 자세한" 상태 정보를 생성시킬 것인지
# (ExtendedStatus On) 아니면 매우 기본적인 정보만 생성시킬 것인지를
# (ExtendedStatus Off) 제어한다. 기본값은 Off 이다.
#
#ExtendedStatus On
# Port: 독립실행형(standalone) 서버가 요청을 기다리는 포트.
# 1023 번보다 낮은 번호의 포트에 대해서는 httpd가 처음에는
# root 권한으로 실행되어야 한다.
Port 80
#
# httpd가 다른 사용자 또는 그룹 권한으로 실행되게 하려면 우선은
# httpd가 root 사용자 권한으로 실행되고 나서 설정한 다른 사용자
# 권한으로 전환해야 한다.
#
User nobody
Group nobody
# ServerAdmin: 서버에 문제가 발생했을 때 메일을 보낼 메일 주소. 이 주소는 예를 들어 에러 문서와 같이 서버가 생성하는 페이지에 나타날 것이다.
ServerAdmin root@localhost
# ServerName은 클라이언트 프로그램에게 돌려주는 서버 이름이 다른 경우 호스트 이름을 설정할 수 있게 해준다. (예를 들어, 호스트의 실제 이름이 아닌 'www'를 사용하도록 하는데 사용할 수 있다.)
# 주의: 호스트 이름을 아무렇게나 만들어선 안된다. 이 이름은 여러분의 호스트에 주어진 타당한 DNS 이름이어야 한다. 잘 모르겠으면 네트웍 관리자에게 문의하라. 호스트가 등록된 DNS 이름을 갖고 있지 않는 경우에는 이 곳에 IP 주소를 적는다. 어찌 되었든 IP 주소를 사용하여(예를 들어 http://222.25.27.29/) 접속할 수 있다. 이런 식으로 해서 리다이렉션이 작동하도록 할 수 있다.
ServerName www.aaaa.com
# DocumentRoot: 제공할 문서의 상위 디렉토리.
DocumentRoot "/home/httpd/html"
# 아파치가 접근할 수 있는 각 디렉토리에 대하여 어떤 서비스와 기능을 허용할 것인지 거부할 것인지 여부를 설정할 수 있다. 디렉토리에 대한 설정 내용은 그 하부 디렉토리에도 영향을 미친다. 우선, "기본값"을 매우 제한적인 상태로 설정한다.
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
None : 어떤 옵션도 사용할 수 없다.
All : MultiViews 옵션을 이용할 수 있다.
Indexes : URL에 지정된 디렉토리에 지정된 파일(ex.index.html)이 없을 경우 디렉토리 목록을 보여준다.
Includes : 서버측의 추가적인 정보를 제공
FollowSymLinks : 디렉토리 상의 심볼릭 링크를 사용가능케 함
FollowSymLinksIfOwnerMatch : 디렉토리 상의 심볼릭 링크를 사용가능케 함(Owner가 매칭되었을때만!)
ExecCGI : CGI 스크립트를 실행할 수 있게끔 함
MultiViews : All 옵션이 설정되었을 때만 지정된 목록의 multiviews를 허용한다.
<Directory "/home/httpd/html">
# 다음 값에는 "None", "All", 또는 "Indexes", "Includes", "FollowSymLinks", "ExecCGI", "MultiViews"의 자유로운 조합이 가능하다.
Options Indexes FollowSymLinks Includes
# 다음은 각 디렉토리에 위치한 .htaccess 파일에서 어떤 옵션을 마음대로 제어할 수 있는지 결정한다. "All" 또는 "Options", "FileInfo", "AuthConfig", "Limit"의 자유로운 결합이 가능하다.
AllowOverride None
# 서버로부터 자료를 얻어갈 수 있는 위치(ex. IP등)를 제어한다.
Order allow,deny
Allow from all
</Directory>
# UserDir 디렉토리에 대한 접근을 제어한다. 다음은 사용자 홈 페이지에 대하여 읽기만 가능하도록 한 예제 설정 내용이다.
UserDir public_html
<Directory /*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<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.php3 index.html index.shtml index.cgi
# AccessFileName: 각 디렉토리에 대하여 접근 제어 정보 내용을 담고 있을 파일 이름
AccessFileName .htaccess
# 다음 행은 웹 브라우져가 .htaccess 파일을 접근할 수 없도록 하는 설정이다. .htaccess에는 인증 정보가 들어있는 경우가 빈번하므로 보안 상 이유로 이 파일에 대한 접근은 불허해야 한다. 웹 방문객들이 이 파일을 보게 하고 싶으면 다음 행들을 주석 처리하라. 만약 AccessFileName 설정을 다른 파일명으로 바꾸었다면 알맞게 .htaccess를 그 이름으로 바꾸어준다.
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
# CacheNegotiateDocs: 기본적으로 아파치는 내용에 따라 협상된 문서에 대해서는 "Pragma: no-cache" 내용을 전송한다. 이 행은 프록시 서버로 하여금 문서를 캐쉬하지 않도록 요청한다. 다음 행의 주석을 풀면 이 기능을 해제하고 모든 프록시가 문서들을 캐쉬할 수 있도록 한다.
#CacheNegotiatedDocs
# 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 conf/magic
</IfModule>
# HostNameLookups: 로그에 클라이언트의 FQDN이름 또는 IP 주소만을 기록할 지 여부. 예를 들어 www.apache.org (on) 또는 204.62.129.132 (off) 기본값이 off 인 이유는 각 클라이언트 요청이 올 때마다 최소한 1 번 이상의 네임 서버 요청이 발생하기 때문이다. 그러나 꼭 필요한 경우에는 이 기능을 켜둔다.
HostnameLookups Off
# ErrorLog: 에러 기록 파일의 위치. <VirtualHost> 컨테이너 안에서 ErrorLog 설정을 하지 않으면 그 가상 호스트에 관련된 에러 메시지도 역시 이 곳에 기록된다. <VirtualHost> 컨테이너 안에서 에러 로그 파일을 정의하면 관련된 에러 메시지는 그 파일로 저장된다.
ErrorLog logs/error_log
# LogLevel: error_log에 기록될 메시지 분량을 제어한다. debug, info, notice, warn, error, crit, alert, emerg 등의 값이 가능하다.
# alert, emerg.
LogLevel warn
# 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
# 접근 로그 파일의 위치와 형식(공통 로그파일 형식) <VirtualHost> 컨테이너 안에서 접근 로그파일 설정을 하지 않으면 모든 기록이 이 파일에 남게 된다. 이와 반대로 각 <VirtualHost> 마다 접근 로그파일을 정의하면 모든 처리가 바로 그 파일에 기록된다.
CustomLog logs/access_log common
# 에이전트 로그파일과 참조자(referer) 로그파일을 갖기 위해서는 다음 지시 내용의 주석 처리를 해제하라. 여기서 에이전트란 여러분의 사이트에 방문하는 브라우져를 말한다. 에이전트 로그를 남기면 여러분의 사이트에 방문하는 브라우져의 종류에 대한 통계를 낼 수 있다. ( 참조자란 주로 배너 광고주에게 중요한 것으로서 여러분의 사이트 바로 직전에 방문한 사이트를 말한다. )
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
# 하나의 로그파일에 접근, 에이전트, 참조자 정보를 다 저장하기 위해서는 (통합 로그파일 형식) 다음 지시 내용을 사용하라. 몇 달만 운영해도 접속이 많은 사이트에서는 combined 로그 파일이 어마어마하게 커져서 루트 파일 시스템을 꽉 채워 버리는 일이 발생할 수 있다!
#
#CustomLog logs/access_log combined
# 부차적으로 서버가 생성하는 페이지(에러 문서, FTP 디렉토리 목록, mod_status, mod_info 출력 등, 그러나 CGI 생성 문서는 제외)에 서버 버전과 가상 호스트 이름을 포함하는 행을 추가하도록 한다. "Email"로 설정하면 ServerAdmin으로의 mailto: 링크를 포함한다.
# On | Off | EMail 중 하나로 설정한다.
#ServerSignature On
# Aliases: 필요한 만큼의 별칭을 만들어 사용한다.(제한 없음) 형식은 다음과 같다.
# Alias 가짜이름 실제이름
# 가짜 이름 뒤에 / 를 포함하면 아파치 서버는 URL에도 / 이 있어야 처리함을 잘 알아두자. 따라서 "/icons"는 별칭 처리되지 않고 "/icons/"만 별칭 처리된다.
Alias /icons/ "/home/httpd/icons/"
<Directory "/home/httpd/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# ScriptAlias: 서버 스크립트를 포함하는 디렉토리를 제어한다. ScriptAlias는 근본적으로 Alias와 같으나 가리키고 있는 실제 디렉토리 안에 들어있는 문서를 실행 프로그램으로 취급하여 실행한다. 맨 뒤에 붙는 "/" 에 대한 규칙은 Alias와 마찬가지이다.
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"
# "/home/httpd/cgi-bin" 부분은 ScriptAlias로 별칭 처리된 실제 CGI 디렉토리로 설정해야 한다.
<Directory "/home/httpd/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
# localhost에서는 지역 시스템 문서를 접근할 수 있도록 허용한다. (레드햇 리눅스 6 설정으로부터 인용)
Alias /doc /usr/doc
<Directory /usr/doc>
order deny,allow
deny from all
allow from localhost
Options Indexes FollowSymLinks
</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/*
....
# DefaultIcon이란 명시적인 아이콘을 갖고 있지 않는 파일에 대한 기본 아이콘 파일을 설정한다.
DefaultIcon /icons/unknown.gif
# AddDescription은 서버 자동 생성 인덱스의 파일명 뒤에 간단한 설명을 넣을 때 사용한다. FancyIndexing을 사용할 때에만 보인다.
# 형식: AddDescription "설명" 화일명
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
#
# 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
....
# LanguagePriority는 내용 협상 중 동점이 발생하는 경우 언어 우선권을 부여한다. 언어의 우선권을 내림차순으로 나열하면 된다.
LanguagePriority ko en fr de
# AddType를 사용하면 mime.types 파일 수정없이 MIME 설정을 할 수 있고 또는 어떤 파일들에 대하여 특정 타입으로 처리하도록 할 수 있다. 예를 들어, PHP3 모듈(아파치 배포파일에 포함되어 있지 않다)에 대해서는 다음과 같이 사용한다.
#AddType application/x-httpd-php3 .php3
#AddType application/x-httpd-php3-source .phps
#다음은 PHP/FI (PHP2)를 위한 것입니다. AddType application/x-httpd-php .phtml
# AddHandler를 사용하면 특정 파일 확장자와 "처리기"를 연결하거나 특정 파일 타입에 특정 동작(action)을 연결할 수 있다. 서버에 내장되어 있거나 또는 Action 명령을 사용하여 추가할 수 있다.(아래 참고)
# 서버 측 포함(SSI) 또는 ScriptAlias 처리된 디렉토리 외부에 존재하는 CGI 스크립트를 사용하고 싶을 때는 다음 내용의 주석을 없앤다.
# CGI 스크립트를 사용하기 위해:
AddHandler cgi-script .cgi
# 서버 처리 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
...
# 프록시 서버 지시자. 프록시 서버 기능을 작동시키려면 다음 행의 주석을 해제시켜준다.
#<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 "/home/httpd/proxy"
#CacheSize 5
#CacheGcInterval 4
#CacheMaxExpire 24
#CacheLastModifiedFactor 0.1
#CacheDefaultExpire 1
#NoCache a_domain.com another_domain.edu joes.garage_sale.com
#</IfModule>
-------------------------------------
httpd.conf test
/usr/sbin/httpd -t
Binary 직접 실행
/usr/sbin/httpd
Script로 실행
/etc/rc.d/init.d/httpd start|stop|restart
'Server&OS > Apache' 카테고리의 다른 글
RewriteRule 설정 (0) | 2010.05.13 |
---|---|
[본문스크랩] httpd.conf의 기본이해 (0) | 2010.04.23 |
[본문스크랩] 이미 설치된 아파치의 configure 옵션 보기 (0) | 2010.04.23 |
[본문스크랩] 아파치 에러 리다이렉트 시키기 (0) | 2010.04.23 |
[본문스크랩] [Apache] 설정 (0) | 2010.04.23 |