서버 운영/Linux

리눅스 apache(아파치) httpd.conf 설정 파일

meong_j 2021. 10. 18. 11:04
728x90
반응형

리눅스에서 아파치 httpd 설치를 설치하고, 아파치의 메인 설정 파일인 httpd.conf 파일에 대해 알아보도록 한다.

 

/etc/httpd/conf/httpd.conf

아파치(Apache)의 메인 설정 파일이다. apache 설치시 자동적으로 /etc/httpd 경로에 설치가 되어지며 /etc/httpd/conf/경로에 httpd.conf 설정 파일이 존재한다.

기본 구성 요소로는 다음과 같다. 

 

 ServerRoot

  • 아파치 Root 홈 디렉터리 경로이다.
  • 절대경로로 설정해줘야 한다.
  • 설치시 기본적으로 /etc/httpd 경로로 지정되어 진다.

 

Listen 

  • Apache 웹 서버 포트를 지정한다.
  • 다른 Ip 주소와 포트에 대해서 연결 할 수 있도록 해준다.
  • 미 지정시 아파치가 실행되지 않는다.
  • 여러 포트 지정시 Listen 지시자를 여러번 선언한다.

 

Include

  • httpd.conf 파일이 아닌 다른 설정 파일을 포함하여 적용한다.

 

 

ServerAdmin

  • 서버 오류 발생 시 클라이언트로 전송할 오류 메시지에 보여질 관리자 이메일 주소이다.
  • 에러 발생시 에러 화면에 해당 이메일 주소가 표시된다.

 

 

ServerName

  • 서버의 도메인을 입력한다.
  • 클라이언트에게 보여줄 호스트 이름 및 포트를 지정한다.
  • DNS 주소가 등록되지 않으면 IP주소로 설정한다.

 

 

DocumentRoot

  • 아파치 서버의 웹문서가 있는 경로 및 웹 페이지의 루트를 지정한다.
  • 마지막 경로엔 '/' 를 지정하지 않는다.
  • DocumentRoot 라인 이후에 <directory> 지시자가 작성된다.

 

 

<Directory>

<Directory {디렉터리 명}>
    [Options]
    [AllowOverride]
    [Require]
    ...
</Directory>
  • 각 디렉터리의 고유한 설정을 하기 위한 블록이다.
  • options : 특정 디렉터리 하위의 모든 디렉터리와 파일에 대한 접근 권한을 제어한다. 
  • AllowOverride : 디렉터리에 .htaccess 파일이 있을 경우 기존 설정을 덮어쓸지 여부를 설정한다.
  • Require : 해당 디렉터리의 접근 허용 여부 설정한다. 

 

Options

option 설명
None 모든 접근을 허용하지 않는다.
All 모든 옵션설정을 허용한다.
Indexes 디렉터리 접근시 DirectoryIndex 지시자에 설정한 파일이 없을 경우, 디렉터리 목록을 화면에 표시한다.
Includes mod_include를 사용하는 SSI(Server Side Includes)를 허용한다.
IncludesNoExec SSI을 허용하지만, #exec cmd 와 #exec cgi는 사용할 수 없자
FollowSymLinks 심볼릭 링크 사용 가능하다. 
ExecCGI mod_cgi를 사용하는 CGI 스크립트 실행 가능하다.
MultiViews 클라이언트가 요청한 media type과 content-encoding을 가지고 다중확장자를 지원하기 위해 MultiViews 기능을 사용한다.

 

AllowOverride

option 설명
None htaccess 파일을 override 하지 않는다.
All htaccess 파일을 우선 적용하도록 override를 허용한다.
AuthConfig 클라이언트 인증 지시자의 사용을 허용한다.

 

Require

option 설명
all denied 모든 접근을 거부한다.
all granted 모든 접근을 허용한다.
ip [ip주소] 특정 ip주소의 접근을 허용한다
not ip [ip주소] 특정 ip주소의 접근을 거부한다

 

.htaccess 파일

# vi /usr/local/apache/htdocs/admin/.htaccess
AuthType Basic                                                  (인증 방식 기본)
AuthName "Admin Login"                                (표시할 인증 메시지)
AuthUserFile /usr/local/apache/conf/password(사용자인증 파일명)        
Require valid-user                                               (사용인증할 방식 user 나 group과 인증할 대상)
  • 디렉터리에 대한 설정 옵션을 제공하는 파일
  • 허가, 인증 URL 재작성, 스팸봇 차단 등등의 기능

 

Order, Deny, Allow

  • Order : Deny와 Allow의 순서를 정한다. 먼저 적은 순서가 먼저 적용된다.
  • Deny : 접근 제한 대상을 설정한다. 
    • Deny from all : 모든 클라이언트의 접근을 거부한다.
    • Deny from [Ip주소] : 특정 주소의 접근을 거부한다.
  • Allow : 접근 허가 대상을 설정한다.
    • Allow from all : 모든 클라이언트의 접근을 허용한다.
    • Allow from [Ip주소] : 특정 주소의 접근을 허용한다.
<Directory "/usr/local/apache/htdocs/admin">
      Order Deny, Allow
      Deny from All
      Allow from 203.247.40.0
</Directory>

-> 접근을 통제하는 디렉터리는 /usr/local/apache/htdocs/admin이고, 203.247.40.0 네트워크 대역의 주소를 갖는 클라이언트의 접근 만을 허가한다.

 

 

  • 디렉터리 경로에 "/" 로 설정하면 모든 디렉터리에 적용되는 옵션을 설정한다.

 

DirectoryIndex

  • 클라이언트가 디렉터리 요청할때 DirectoryIndex에 설정된 파일명을 요청한다.

 

사용 예시]

# DirectoryIndex index.html, index.htm, index.php

> 웹 디렉터리 접근시에 인식되는 인덱스 파일 순서를 index.html, index.htm, index.php 순으로 지정한다.

 

UserDir

UserDir [디렉터리]
  • 일반 사용자의 웹 디렉터리를 지정한다.

 

 

Files

  • 해당 파일로 설정된 파일에 대한 옵션을 설정한다.
  • 주로 접근 권한을 설정한다.

 

ErrorLog

  • 아파치의 error log가 생성되는 경로를 지정한다.

 

LogLevel

  • log를 남길 기준의 Level을 설정한다.
  • 레벨은 debug, info, notice, warn, error, crit, alert, emerg 가 있고, 기본으로 warn으로 설정되어 진다.

 

ErrorDocument

  • 아파치에서 Error 발생 시 서버가 클라이언트에게 반환할 메시지 및 페이지를 설정한다.
Error code 설명
400 Bad Request, 클라이언트의 잘못된 요청으로 처리 할 수 없음
401 Unauthorized, 클라이언트의 인증 실패
402 Payment required, 예약됨
403 Forbidden, 접근 허가가 거부됨
404 Not found, 존재하지 않는 문서

 

<VirtualHost>

<VirtualHost [Ip주소:포트]>
    ServerAdmin ..
    DocumentRoot ..
    ServerAlias ...
</VirtualHost>
  • 아파치 웹 서버에서 주 도메인 이외에 추가로 도메인 설정
반응형