• 흐림동두천 -3.2℃
  • 흐림강릉 -1.3℃
  • 흐림서울 -0.8℃
  • 대전 0.8℃
  • 대구 1.6℃
  • 비 또는 눈울산 2.0℃
  • 광주 3.3℃
  • 흐림부산 3.1℃
  • 흐림고창 3.8℃
  • 제주 7.4℃
  • 흐림강화 -1.6℃
  • 흐림보은 0.5℃
  • 흐림금산 0.5℃
  • 흐림강진군 3.8℃
  • 흐림경주시 0.7℃
  • 흐림거제 4.3℃
기상청 제공

httpd.conf 설정

# LoadModule rewrite_module          module/mod_rewrite.so

아파치를 DSO방식으로 설치했을때 모듈을 로드하는 지시자

 

 


# LockFile logs/accept.lock

→ USE_FCNTL_SERIALIZED_ACCEPT 또는 USE_FLOCK_SERIALIZED_ACCEPT를 사용하여 컴파일되었을 때 사용되는 잠금 파일로의 경로. 잠금 파일의 값은 반드시 로컬 디스크에 저장되어야 함.  


잠금파일 : 어떤 프로세스에서 사용중인 파일을 다른 프로세스가 함부로 변경하지 못하도록 함

httpd.lock : 웹서버가 떠 있다는 걸 알려s는 파일, 지금 웹서버 데몬이 돌고 있으니, 다른 웹서버 데몬은 돌지 말라.



  

# PidFile logs/httpd.pid

아파치가 시작될 때 자신의 프로세스번호(PID)를 기록하는 파일




# User daemon                                     // 리눅스 시스템에서 0~499까지 UID와 GID를 사용하므로
# Group daemon                                   // 500번 이상의 UID와 GID를 가지는 계정으로 설정

서비스를 직접 담당하는 아파치자식프로세스들의 실행소유자와 소유그룹 (nobody를 많이 쓴다)

아파치 웹 데몬이 구동될때 자식프로세스가 생기는데, 위에 User와 Group 권한으로 생성이 된다.

[root@~]# ps -ef | grep httpd
root     13683     1  0 03:19 ?        00:00:00 /opt/webapps/apache2/bin/httpd -k start    
nobody   13684 13683  0 03:19 ?        00:00:00 /opt/webapps/apache2/bin/httpd -k start
nobody   13685 13683  0 03:19 ?        00:00:00 /opt/webapps/apache2/bin/httpd -k start
nobody   13686 13683  0 03:19 ?        00:00:00 /opt/webapps/apache2/bin/httpd -k start
nobody   13687 13683  0 03:19 ?        00:00:00 /opt/webapps/apache2/bin/httpd -k start




#  <Directory "/"> ~ </Directory>
지정한 디렉토리 이하의 모든 웹문서에 대한 제어를 어떤 방식으로 할것인가를 결정

* Options 지시자
None : 아무 옵션도 사용안함
All : MultiViews 를 제외한 모든 설정 허용
Indexes : DirectoryIndex에서 지정한 파일(index,html 등)이 존재하지 않을 경우 디렉토리의 파일 리스트를 보여줌
* Indexes 옵션이 없고 DirectoryIndex에서 지정한 파일이 존재하지 않는 디렉토리를 웹브라우저에서 요청했을때에는
"Forbidden. You don't have permission to access 디렉토리명 ... on this Server" 메시지 보여준다
Includes : SSI사용 허용 (mod_include.c 모듈이 로딩되어 있어야 함)
IncludesNOEXEC : SSI사용 허용, #exec와 #include는 비허용 (시스템에 위험한 SSI실행태그 비허용 하겠다는 것)
FollowSymlinks : 심볼릭링크 허용, 디렉토리이하에 존재하는 링크파일들의 링크가 그대로 웹브라우저에서 사용된다.
nobody 권한으로 접근이 가능한(읽기모드) 모든 파일은 링크가 가능.
ExecCGI : CGI 실행 허용. CGI사용은 ScriptAlias로 지정된 위치에서 사용하는게 기본이지만, ExecCGI를 사용하면 지정된 디렉토리내에서 CGI 사용 허용됨. (AddHandler cgi-script 지시자에서 정의한 확장자만 유효)
MultiViews : 클라이언트 브라우저 기능에 따라 내용을 다르게 보냄

* AllowOverride 지시자
None : 웹문서 디렉토리에서 접근제한 설정파일을 인식하지 않음 (AccessFilename .htaccess)
All : 접근제한 허용

* Order 지시자>
Order allow, deny : 먼저 허용해 주고 나서 거부하는 순으로 작동
Order deny, allow : 반대로 (특정 호스트만 접근할 수 있도록 할때)

* Allow, Deny
allow from all, deny from all, allow from ip, deny from ip



#AccessFilename  .htaccess
각 디렉토리에 대하여 접근 제어 정보 내용을 담고 있는 파일이름을 설정한다.
통상적으로 .htaccess 라는 이름을 사용한다.



# DirectoryIndex index.html indexl.htm index.php index.cgi
웹사이트 초기페이지 문서로 보여줄 웹문서의 순서를 지정



# <FileMatch "^.ht> ~ </FilesMatch>  
.ht 로 시작하는 파일의 내용을 웹브라우즈에서 보여줄지 말지를 결정



# ErrorLog "logs/error_log"
에러로그파일 위치 지정
가상호스트 설정내에서 별도의 에러로그파일을 사용하지 않으면, 여기서 지정한 로그위치를 사용함



#LogLevel  none : 모든 메시지
     emerg : 매우 위험한 상황의 메시지
     alert : 즉각적인 조취를 취해야하는 메시지
     crit : 급한건 아니지만 치명적인 문제가 발생한 메시지
     error : 에러가 발생했을때의 메시지
     warn : 주의를 요하는 메시지
     notice : 에러가 아닌 알림에 관한 메시지
에러로그파일의 기록 내용을 얼마나 자세하게 기록할지 지정



# LogFormat "%v %h %l %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
# LogFormat "%h %l %u %t "%r" %>s %b" common
웹로그파일(access_log)에 방문자들에 대한 기록을 어떤 포맷으로 할 것인가에 대한 포맷종류를 설정
로그포맷들의 이름들 : combined, common, referrer, agent, combinedio

%v : 요청을 받은 서버네임 혹은 가상호스트 이름
%h : 요청을 보낸 원격의 호스트
%l : 클라이언트에서 보낸 로그인 ID명(원격 로그인 ID)
%r : 요청한 내용의 첫번째 줄
%s : 서버가 보내는 처리상태를 표시
%u : 사용자 인증에 사용된 유저명
%t : 클라이언트의 요청을 아파치 자식프로세스가 처리하기 위해 소요된 시간
%{헤더} : 요구된 헤더 내용
%U : 요구한 URL



# CustomLog  /var/log/httpd/access_log combined
어떤식으로 남길것인지 결정하는 Format 형식을 지정 (여기선 combined)



# 특정디렉토리경로로 방문자가 로딩하면 지정된 웹사이트로 리다이렉트
Redirect 디렉토리경로 사이트



# ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
ScriptAlias로 지정된 디렉토리내에서만 CGI 허용


# DefaultType text/plain
mime.types 파일에 정의되어 있지 않은 파일형식에 대한 요청을 받았을때 사용할 문서타입


# TypesConfig conf/mime.types
mime.types 파일 위치 (conf디렉토리)



# AddType application/x-compress      .Z
# AddType application/x-gzip          .gz .tgz
# AddType application/x-tar           .tgz
mime.types에 정의되어 있지 않은 타입을 추가로 설정



# AddEncoding x-compress              .Z
# AddEncoding x-gzip                  .gz .tgz
자료를 받고 있는 도중에 정보에 대한 압축해제를 할 수 있도록 함



# AddHandler cgi-script .cgi
 *.cgi 형식의 파일들은 cgi-script 라는 handler가 처리
(파일을 요청할때 아파치가 내부적으로 수행할 작업을 "핸들러(handler)"라고 함)



# AddHandler imap-file map
이미지맵파일을 사용하기 위함



# Addtype text/html .shtml
# AddOutputFilter INCLUDES .shtml
SSI문서로 인식할 파일확장자를 지정한 것. SSI 코드가 들어있는 문서의 확장자를 *.shtml으로 사용할 수 있는 설정
SSI로 된 문서는 아파치 웹서버에서 먼저 해석된 후에 그 결과를 html 문서와 함께 웹브라우저로 보내지게 된다.
Options 지시자에 Includes라는 값이 설정되어 있을 때만 유효하다.



#<IfModule mod_mime_magic.c>
# MIMEMagicFile conf/magic
#</IfModule>
mod_mime_magic 모듈을 사용하면 파일의 내용을 가지고 파일의 타입에 힌트를 얻는다.
MIMEMagicFile conf/magic 해당 모듈이 어디에 존재하는지 지정



#ErrorDocument 500 "The server made a boo boo."
500에러일 경우 해당 메시지 출력

#ErrorDocument 404 /missing.html
404에러일 경우 특정 문서를 출력

#ErrorDocument 402 http:www.example.com/error.html
402에러일 경우 특정 URL에 존재하는 문서 출력



# Include conf/*.conf
웹서버와 연동하는 프로그램과 관련된 환경파일을 불러오도록 지정



# Alias /icons/ "/usr/local/icons/"
① DocumentRoot 밖의 문서를 안쪽에서 사용하기 위함
② 긴 이름을 짧게 줄여서 사용하기 위함 (Alias /가상이름/ "/절대경로/")


# AddIconByEncoding
파일의 판단을 확장자 대신 MIME 인코딩 값에 의해서 처리한다.
# AddIconByeType
파일의 판단을 확장자 대신에 MIME 타입에 의해서 처리한다
# AddIcon /icon/binary.gif .bin .exe
서버에게 다양한 파일, 파일명 확장자에 대하여 어떤 아이콘을 보여줄 것인지를 설정한다.



# DefaultIcon /icons/unknown.gif
위에서 설정한 AddIcon에 해당하는 파일이름이 없을 경우에 여기서 지정한 기본 아이콘파일(unknown.gif)로 보여주도록하는 설정이다.



# AddDescription "GZIP 으로 압축된 파일입니다" .gz
AddDescription 지시자는 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을 표시할 때 사용한다.
이 설정은 IndexOptions가 FancIndexing으로 설정되었을때만 표시된다.
설정형식은 AddDescription "표시할 설명" 파일확장자



# ReadmeName README
ReadmeName은 디렉토리 목록표시 뒤(웹브라우저 아랫부분, 일종의 꼬릿말)에 붙여서 보여줄 파일의 이름을 지정
# HeaderName HEADER
HeaderName은 디렉토리 목록표시 앞(웹브라우저 윗부분, 일종의 머릿말)에 붙여질 파일의 이름을 지정
#ndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
디렉토리목록을 인덱싱할 때 표시할 파일리스트에서 제외할 파일들을 지정한다. 쉘스타일의 와일드카드(*,?)가 허용된다.



#BrowserMatch "Mozilla/2" nokeepalive
#BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
#BrowserMatch "RealPlayer 4.0" force-response-1.0
#BrowserMatch "Java/1.0" force-response-1.0
#BrowserMatch "JDK/1.0" force-response-1.0
BrowserMatch 지시자는 특정 브라우저들에 대한 특정 수행을 지시하기 위한 설정들이다.
첫번째 것은 네스케이프 2.x 또는 그를 흉내내는 브라우저에 대하여 KeepAlive 기능을 쓰지 않도록 한다. 이 브라우저들은 KeepAlive 구현에 문제점을 갖고 있기 때문이다.
두번째 것은 HTTP/1.1을 잘못 구현하였고 301 또는 302 (redirect)반응에 대하여 KeepAlive를 제대로 지원하지 못하는 마이크로소프트 인터넷 익스플로러 4.0b2를 위한 것이다.
세번째 것은 네번째 다섯번째 것들은 기본적인 1.1 반응도 제대로 처리하지 못함으로써 HTTP/1.1 스펙을 위반하고 있는 브라우저에 대하여 HTTP/1.1 반응을 하여 하지 않도록 한다.



#Timeout 300
서버와 클라이언트간에 아무런 메세지가 발생하지 않았을 때 타임아웃시키고 연결을 끊을 시간을 초단위로 설정



#KeepAlive On (Off)
Apache의 자식 프로세스가 특정 사용자의 지속적인 요청작업들을 계속해서 처리하도록 허용(On)
한 방문자가 홈페이지에 접속하여 다른 여러페이지들을 계속해서 보게될때 그 방문자의 지속적인 다른 요청들을 자식 프로세스가 계속해서 처리(On)



#MaxKeepAliveRequests 100
KeepAlive 값이 On일때만 유효,  하나의 자식프로세스가 지속적인 요청을 처리할 수 있는 최대 갯수
이 값이 0일경우 무한대로 요청을 처리하며 성능을 높이기 위해 높은 값을 추천한다.  



# ServerTokens Prod : 웹서버 종류만 표시 Server:Apache
   Major : 웹서버 종류와 주버전까지 표시 Server:Apache/2
   Minor : 웹서버 종류와 하위버젼까지 표시 Server:Apache/2.0
   Min : 웹서버 종류와 버젼 표시 Server:Apache/2.0.46
   OS : 웹서버 종류와 버젼, 운영체제 종류 표시 Server:Apache/2.0.46 (Unix)
   Full : 웹서버 종류와 버젼, 운영체제 종류, 설치된 모듈 표시 Server:Apache/2.0.46 (unix) PHP/4.3.2
아파치에서 헤더에 의해 전송되는 정보를 어디까지 보여줄 것인가를 설정



# ServerSignature On (On / Off / Email)
아파치 서버가 생성하는 페이지에 추가적인 정보 (아파치 버젼, 가상호스트 정보, 관리자의 Email 주소)를 보여줌



# HostnameLookups Off
웹서버의 로그에 보면 방문자들에 대한 웹문서 접근기록이 남겨지는데
IP주소로 기록할지(Off), 도메인명(On)으로 기록할지 설정



#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>
mod_status를 이용해 서버의 상태정보를 모니터링이 가능하다. http://도메인/server-status와 같이 실행한다.



# ExtendedStatus On
server-status 로 서버의 상태정보를 모니터링 할 때 자세한 상태정보기능을 제공(On), 안함(Off)



#<Location /server-info>
#    SetHandler server-info
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>
mod_info 모듈을 사용하여 서버의 환경설정을 보고 받을 수 있다. http://도메인/server-info 와 같이 실행한다.



# AddLanguage ca. cz. cs
웹브라우저(클라이언트)가 이해할 수 있는 언어를 제공하기 위한 설정
# LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
언어의 우선순위를 내림차순으로 지정
# AddDefaultCharset UTF-8
기본적으로 적용되는 웹문서의 언어를 지정
# AddCharset ISO-8859-1  
추가로 지원하는 웹 문서의 언어를 설정



# preform MPM                                 // 전통적인 아파치의 요청 처리방식
<IfModule mpm_prefork_module>
StartServers                  5                 // 아파치 웹데몬이 구동될 때 자식프로스세를 몇개로 시작할지 지정
MinSpareServers           5                 // 최소로 유지해야 할 여분의 자식프로세스 수
MaxSpareServers          10                // 최대로 제한해야 할 여분의 자식프로세스 수
MaxClients                   150               // 클라이언트들이 동시에 접속할 수 있는 최대 수
MaxRequestsPerChild    0                 // 자식프로세스가 죽기전에 처리할 수 있는 최대 요청 수



# worker MPM                                 // 방문자의 요청을 스레드 방식으로 처리
<IfModule mpm_worker_module>
StartServers                  5                 // 시작시에 초기화 되는 서버 프로세스의 수
MinSpareThreads          25                // 대기하고 있는 최소 스레드 수
MaxSpareThreads         75                // 대기하고 있는 최대 스레드 수
MaxClients                   150               // 클라이언트들이 동시에 접속할 수 있는 최대 수
ThreadsPerChild            25               // 개별 자식 프로세스가 지속적으로 가질 수 있는 최대 스레드 수
MaxRequestsPerChild     0                // 자식프로세스가 죽기전에 처리할 수 있는 최대 요청 수



# UserDir public_html
개별 사용자의 홈페이지 디렉토리



#NameVirtualHost
기상호스트 사용