허원철의 개발 블로그

Apache - httpd.conf 설정 하기 본문

server

Apache - httpd.conf 설정 하기

허원철 2017. 2. 1. 16:06
이번글은 Apache Server를 사용할 때, 세부 설정에 대한 글 입니다.




설정 파일 Path

1
vi /etc/httpd/conf/httpd.conf
cs


ServerTokens [OS : default/Prod/Major/Minor/Min/Full]

- Http로 응답할 Header 설정 값입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ServerTokens Prod
Server sends (e.g.): Server: Apache
 
ServerTokens Major
Server sends (e.g.): Server: Apache/2
 
ServerTokens Minor
Server sends (e.g.): Server: Apache/2.0
 
ServerTokens Min[imal]
Server sends (e.g.): Server: Apache/2.0.41
 
ServerTokens OS
Server sends (e.g.): Server: Apache/2.0.41 (Unix)
 
ServerTokens Full (or not specified)
Server sends (e.g.): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
cs
 
※ 최소한의 정보를 제공하는 Prod로 설정하는 것이 좋습니다.


Timeout  [300 : default]

- 클라이언트 요청에 의해 서버와 연결이 될 때, 서로간에 아무런 메시지가 발생하지 않을 때  연결을 끊는 시간입니다. 

※ Rest API 경우에는 낮을 수록, 웹서비스에 경우 높을 수록 좋을 것 같습니다.


KeepAlive [On : default / Off]

- Apache의 한 프로세스가 사용자의 지속적인 요청작업을 계속 처리할 것인지 대한 여부입니다.

※ 현재는 모르겠으나, 어느 블로거분의 말씀에 의하면 Off를 하게되면 시간이 지나도 안 끊기고 계속 살아 있다고 합니다. 그래서 On 을 두고 KeepAliveTimeout을 이용해 적절히 조절하는 것이 좋을 것 같습니다.


KeepAliveTimeout [5 : default]

- KeepAlive가 On인 경우 유효한 값으로, 설정 시간(초)동안 요청이 없으면 타임아웃 시킵니다.

※ 낮을수록 동시접속 수를 늘릴 수 있습니다.


MaxKeepAliveRequests [100 : default]

- KeepAlive가 On인 경우 유효한 값으로, 하나의 프로세스가 방문자들의 요청을 처리할 횟수를 지정합니다.

※ 0으로 설정하면 무제한 요청이 허용됩니다. 서버 성능을 최대화하려면 설정값을 높은 값으로 유지하는 것이 좋습니다.


MPM 방식

prefork [default]
- Process : Thread = 1 : 1 
- 안정적이다.
- 메모리를 독립적으로 사용

<IfModule prefork.c>
 StartServers         8
 MinSpareServers  5
 MaxSpareServers 20
 ServerLimit           256
 MaxClients            256
 MaxRequestsPerChild 4000
</IfModule>


worker
- Process : Thread = 1 : n
- 동시접속 수가 많은 곳에 적합
- 메모리를 공유하며 사용

<IfModule worker.c>
 StartServers          4
 MaxClients             300
 MinSpareThreads  25
 MaxSpareThreads 75
 ThreadPerChild      25
 MaxRequestsPerChild 0
</IfModule>


ExtendedStatus [Off : default / On]

- Apache의 상태를 모니터링 할 때, 자세한 상태정보 기능을 제공할 것 인지에 대한 설정입니다.

※ server-status에 영향을 줍니다.


User    [apache : default]
Group [apache : default]

-  Apache 자식 프로세스들의 실행소유자와 소유그룹을 설정하는 값입니다.

※ 보안을 위해 nobody로 설정합니다.


ServerName [www.example.com : default]

- 클라이언트에게 보여줄 호스트이름을 지정합니다.

※ 도메인이 없다면 IP주소라도 꼭 적어야 한다.

ServerName을 지정하지 않으면 서버는 먼저 운영 체제에 시스템 호스트 이름을 요청하여 실패한 경우, 시스템에있는 IP 주소에 대해 역 조회를 수행하여 클라이언트가 볼 수있는 호스트 이름을 추론합니다.
ServerName에 지정된 포트가 없으면 서버는 들어오는 요청의 포트를 사용합니다. 최적의 신뢰성과 예측 가능성을 위해서는 ServerName 지시문을 사용하여 명시 적 호스트 이름과 포트를 지정해야합니다.


UseCanonicalName [Off : default / On]

On : 지정한 ServerName 를 사용합니다
Off : 호스트네임과 포트를 사용합니다.


<Directory> ~ </Directory>

- Options [None/All/Indexes/Includes/IncludesNOEXEC/FollowSymlinks/ExecCGI/MultiViews]
- AllowOverride [None/All/AuthConfig/FileInfo/Indexes/Options/Limit]
- Order [allow || deny]
- [allow || deny] from [도메인 네임/호스트 이름 주소/호스트 IP 주소/IP 주소의 앞부분 3byte/all]



HostnameLookups [Off : default / No]

- access_log에 기록되는 설정 값입니다.

On일 경우, IP주소에 대하여 DNS에 질의하여 해당 IP주소에 대한 도메인 정보를 가져옵니다.
Off일 경우, IP주소만 기록합니다.

※ DNS질의로 인한 트래픽이 발생하기 때문에 Off로 설정합니다.


EnableMMAP [On : default / Off]

- 메모리매핑을 지원한다면, Apache가 웹문서를 로딩하기 위해 내부문서를 읽을 때 파일을  메모리 매핑하여 처리합니다.

※ 아파치의 성능이 크게 향상될 수 있으나, 안정성을 해치기도 하고 여러 이슈가 있어 Off를 하는 것이 좋습니다.


EnableSendfile [On : default / Off]

- sendfile을 지원한다면, 정적 파일을 서비스하는 경우 전송할 파일을 직접 읽지 않고 가능합니다.

※ 안정성을 해치므로 Off로 하는 것이 좋습니다.


BrowserMatch {browser} {option}

- 특정 브라우저들에 대한 특정 수행을 지시하기 위한 설정입니다.


NameVirtualHost [*:80]

- 이름기반 가상 호스트를 사용하겠다는 설정입니다.

※ mod_ssl을 이용한 SSL 사용 시, 포트를 443으로 수정해야 합니다.


<VirtualHost *:80> ~  </VirtualHost>

- ServerAdmin : 해당 가상호스트의 관리자 이메일 주소
- DocumentRoot : 해당 가상호스트의 홈페이지디렉토리 위치
- ServerName : 해당 가상호스트의 도메인명
- ErrorLog : 해당 가상호스트의 웹에러로그 파일 위치
- CustomLog : 해당 가상호스트의 웹로그파일 위치


참고


'server' 카테고리의 다른 글

ELK Stack 개념 정리  (430) 2017.02.23
Apache - version 2.4 설치하기  (404) 2017.02.23
OpenSSL로 https 사용해 보기  (420) 2017.02.06
Session Clustering 알아보기  (417) 2016.12.11
[펌] Tomcat Tuning  (420) 2016.12.04
Comments