[Apache] config

배세훈·2022년 9월 6일
0

설치 디렉토리 수정

  • Apache 설정 파일인 http.conf 파일은 설치 디렉토리에서 "/Apache24/conf/"에 들어 있다.
  • MacOS는 /etc/apache2/httpd.conf 에 있다.
  • 리눅스는 /etc/httpd/conf/httpd.conf

ServerRoot

  • ServerRoot에 Apache 서버의 디렉토리를 설정한다.
    구체적으로는 SRVROOT 변수에 설치한 디렉토리 설정을 하고 있고, ServerRoot에 SRVROOT 변수를 사용하여 설정하고 있다.
  • 절대 경로로 설정해줘야 한다.
  • 기본적으로 /etc/httpd 경로로 지정된다.
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path.  If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used.  If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
Define SRVROOT "c:/Apache24"

ServerRoot "${SRVROOT}"

포트 번호 설정

  • Listen는 Apache가 어떤 포트 번호와 IP 주소를 listen 할 것인지를 설정한다.
    일반적으로 Web 서버와 브라우저와의 통신은 80번 포트를 사용하여 실행되기에 기본 설정에도 80번이 설정되어 있다.
    일반적으로 변경할 필요는 없지만 여러 Web 서버가 동일한 서버 컴퓨터에서 실행하는 경우에는 포트 번호가 중복되지 않게 여기에서 설정을 변경하면 된다.
  • 다른 ip 주소와 포트에 대해서 연결 할 수 있도록 해준다.
  • 미 지정시 아파치가 실행되지 않는다.
  • 여러 포트 지정시 Listen 지시자를 여러번 선언한다.
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

ServerName 설정

  • ServerName은 서버 자체를 나타내는 도메인명과 포트 번호를 설정한다. 초기 설정은 주석으로 되어 있고 설정하려면 "www.example.io:80"와 같이 도메인명 + 포트 번호로 설정한다.(포트 번호를 생략하면 기본 80을 사용한다)
  • 서버의 도메인을 입력한다.
  • 클라이언트에게 보여줄 호스트 이름 및 포트를 지정한다.
  • DNS 주소가 등록되지 않으면 IP주소로 설정한다.
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName localhost:80
출처: https://araikuma.tistory.com/775 [프로그램 개발 지식 공유:티스토리]

Include

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

Include conf.modules.d/*.conf

DocumentRoot

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

Order, Deny, Allow

  • Order: Deny와 Allow의 순서를 정한다. 먼저 적은 순서가 먼저 적용된다.

  • Deny: 접근 제한 대상을 설정한다.
    - Deny from all: 모든 클라이언트의 접근을 거부한다.
    - Deny from [IP주소]: 특정 주소의 접근을 거부한다.

  • Allow: 접근 허가 대상을 설정한다.
    - Allow from all: 모든 클라이언트의 접근을 허용한다.
    - Allow from [Ip주소]: 특정 주소의 접근을 허용한다.

    <Directory "/user/local/apache/htdocs/admin">
      Order Deny, Allow
      Deny from All
      Allow from 192.168.111.11
    </Directory>

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

    <Directory />
    	AllowOverride none
    	Require all denied
    </Directory>
  • 디렉터리 경로에 "/"로 설정하면 모든 디렉터리에 적용되는 옵션을 설정한다.

DirectoryIndex

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

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

Files

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

ErrorLog

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

LogLevel

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

LogFromat

  • 사용자 접속을 기록할 로그 포멧을 정의한 부분이다. 아래와 같이 4가지 형식의 로그 포맷이 기본적으로 설정되어 있다.

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   

  • common: 가장 일반적인 로그 기록
  • referer: 현재 아파치 서버에 접속하기 전에 머물렀던 URL으로 기록한다.
  • agent: 접속자의 웹 브라우저(OS 포함) 종류를 기록한다.
  • combined: 위의 3가지 로그 포멧을 모두 조합한 것이다. 접속자에 대한 많은 정보를 기록하길 원한다면 combined으로 설정하면 된다.
    %h %l 등과 같은 아파치 로그 포멧을 알고 싶으면 아파치 메뉴얼을 참고

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combinedLogFormat "%h %l %u %t "%r" %>s %b" commonLogFormat "%{Referer}i -> %U" refererLogFormat "%{User-agent}i" agent

CustomLog

CustomLog /usr/local/apache/logs/access_log common

  • 로그 파일의 경로와 파일 이름, 포맷을 설정한다.
  • common 이외에 위에서 정의한 로그 포멧을 지정할 수 있다.

ErrorDocument

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

Timeout

  • Timeout은 클라이언트에서 서버로 접속할 때 클라이언트나 서버의 통신장애로 인해 300초 동안 클라이언트에서 완벽한 처리를 하지 못할 때 클라이언트와의 연결을 해제한다.

Timeout 300

Keepalive On

  • 특정 클라이언트의 지속적인 요청 작업들을 계속해서 처리하도록 허용할지 안할지에 대한 여부를 설정 한다.

maxkeepaliverequest 100

  • keepalive 값이 On인 경우 클라이언트와 연결된 작업의 최대 개수를 100개로 제한한다. 해당 회수를 초과하면 현재 프로세스는 종료되고 다른 프로세스가 처리한다.
profile
성장형 인간

0개의 댓글