강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 아파치(Apache) 환경 설정3편

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 아파치(Apache) 환경 설정3

 

 




conf/extra/httpd-default.conf

 

 

아파치 웹서버의 기본설정사항들이 설정되어있는 설정파일이다.

 

 

 

자세히 살펴보자.

 

 

 

 

 

Timeout 300

 

 

 

 

 

 

클라이언트 요청을 아파치가 기다리는 시간 (초단위)을 의미하며, 다음 조건에 대해 기다리는 시간이다.

 

 

 

 

 

GET 요청을 수신하는데 걸리는 총 시간

 

POST 또는 PUT 요청시 TCP 패킷간의 수신시간

 

응답에서 TCP 패킷 전송시 ACK들 사이의 시간

 

 

 

위 조건의 시간을 설정한 시간()를 초과하게 되면 Timeout이 발생되게 된다.

 

 

 

 

 

 

 

 

 

KeepAlive On

 

 

 

 

 

 

 

이 설정은 HTTP/1.0Keep-Alive확장과, HTTP/1.1의 지속적인 연결기능을 제공하여 오랫동안 유지 가능한 HTTP 세션을 제공한다.

 

 

 

이는 같은 TCP 커넥션을 통하여 여러 요청을 처리하는 것이 가능하다.

 

 

 

이미지가 많이 있는 웹사이트의 경우 연결에 대한 지연을 줄여 대기시간에 대한 약 50%의 성능을 향상시킬 수 있다.

 

 

 

 

 

아파치웹서버의 특정 한 프로세스가 특정 사용자의 지속적인 요청작업들을 계속해서 처리하도록 허용할 것인가(On) 허용하지 않을 것인가(Off)를 결정한다.

 

 

 

즉 한 방문자가 홈페이지에 접속하면 웹사이트와 아이콘, 이미지등 약 100여개의 요청을 하게 된다.

 

 

 

만약 이 설정이 Off로 되어 있다면, 커넥션을 100번 하게 되며, 아파치는 프로세스 또는 쓰레드를 100번 생성하게 된다.

 

 

 

만약 이 설정이 On으로 되어 있다면, 한번 사용한 TCP연결 및 프로세스 또는 스레드를 재 사용하기 때문에 TCP연결 및 프로세스 또는 스레드 생성에 대한 지연을 줄여 성능을 향상 시킬 수 있다.

 

 

 

 

이 지시자의 값이 On으로 되어 있을 때만이 바로 이어서 나오는 “MaxKeepAliveRequests” 지시자와 “KeepAliveTimeout”지시자의 값이 유효하게 된다.

 

 

 

만약 “KeepAlive Off”로 설정하였다면 이어서 나오는 두개의 지시자는 설정되어있다 하더라도 유효하지 않게 된다.

 

 

 

 

 

 

 

 

MaxKeepAliveRequests 100

 

 

 

 

 

 

 

이 값은 위의 KeepAlive값이 On일때에만 유효한 값이다.

 

 

 

즉 방금 위에서 KeepAliveOn일때에 하나의 자식프로세스가 특정방문자의 요청을 계속해서 처리하도록 한다고 했는데 이때 무한적으로 계속해서 처리하는 것이아니라 MaxKeepAliveRequests지시자에서 지정한 회수까지만 처리한다라는 의미이다.

 

 

 

즉 특정 방문자의 지속적인 요청을 하나의 자식프로세스가 계속처리하다가 최대 100번의 요청을 처리하게 되면 그 자식프로세스는 죽고 다시 다른 자식프로세스가 그 방문자의 요청을 계속해서 처리하게 된다.

 

 

 

 

이 값은 방문자수가 많은 홈페이지 일수록 조금 상향시켜 두면 된다.

 

 

 

그리고 무한적으로 계속해서 처리하도록 하려면 이 값을 0으로 설정하면 된다.

 

 

 

 

 

 

 

 

KeepAliveTimeout 5

 

 

 

 

 

 

 

이 지시자 또한 위의 KeepAlive지시자값이 On일때에 유효한 지시자이다.

 

 

 

즉 특정 방문자의 요청을 하나의 자식프로세스가 계속해서 처리하고 있을 때에 한건 한건씩의 처리에 있어서 KeepAliveTimeout값에서 지정한 시간()만큼 요청없이 지속될 때에 그 연결을 끊기 위해 timeout시키겠다는 설정이다.

 

 

 

그냥 쉽게 생각해서 아파치 자식프로세스들이 한건 한건의 요청을 처리하는 사이 사이에 5초동안 아무런 요청없이 지속되면 그 연결을 끊겠다는 의미이다.

 

 

 

보다 쉽게 설명하면 동일한 연결에서 같은 사용자에 의한 다음 연결을 하기 위해 해당 자식프로세스가 대기할 수 있는 최대 시간을 초단위로 설정한 것이다.

 

 

 

이 설정 또한 효율적인 프로세스관리와 자원낭비를 줄이기 위하여 존재하는 설정이다.

 

 

 

 

 

 

 

 

 

UseCanonicalName Off

 

 

 

 

 

 

 

아파치프로세스가 자기자신의 URLSERVER_NAME, 그리고 SERVER_PORT값들을 어떤방식으로 설정하여 결정하는가에 대한 지시자이다.

 

 

 

이 값이 Off로 설정되었다면 아파치는 클라이언트에 의해 제공되어지는 HostnamePort를 사용할 것이다.

 

 

 

만약 On으로 설정하였다면 아파치는 ServerName지시자의 값을 사용할 것이다.

 

 

 

 

 

 

 

 

 

AccessFileName .htaccess

 

 

 

 

 

 

특정페이지에 암호와 패스워드로 로그인할 수 있도록 하기위한 설정으로 디렉토리별로 접근제어할 정보파일을 어떤이름으로 사용할 것인가를 지정한다.

 

 

 

디렉토리별로 인증을 거쳐서 접근할 수 있는 설정을 하기위한 것이다.

 

 

 

예를 든다면 어떤 홈페이지의 전부나 혹은 일부로 접근하려고 할 때 ID, Password를 묻는 창이 뜨면서 정확히 입력한 경우에만 접근허용하는 것이다.

 

 

 

보안상의 이유로 이 파일의 이름을 다른 이름으로 변경하고 싶다면 ".htaccess"대신에 다른 파일이름을 적어주면 된다.

 

 

 

 

 

 

 

 

ServerTokens Full

 

 

 

 

 

 

 

이 지시자는 아파치웹서버의 HTTP로서 응답할 헤더(Header)를 설정하는 것이다.

 

 

 

만약 이 값을 Full로 설정하였다면 운영체제의 OS타입과 컴파일된 모듈들과 같은 정보들이 모두 노출될 수 있다.

 

 

 

웹서버의 보안을 위해서는 가능한 최소정보만을 제공하도록 prod로 설정하는 것이 좋다.

 

 

 

사용가능한 설정값의 종류로는 다음과 같은 것들이 있다.

 

 

 

 

Prod : Product Only의 약어로서 웹서버의 종류만을 제공한다.

 

 

 

Min : Minimal의 약어로서 웹서버의 종류와 버전을 제공한다.

 

 

 

OS : 웹서버의 종류와 버전, 그리고 운영체제의 종류를 제공한다.

 

 

 

Full : 웹서버의 종류와 버전, 그리고 운영체제의 종류, 그리고 설치된 모듈(어플리케이션들)정보등을 제공한다.

 

 

 

 

 

 

 

 

 

ServerSignature On

 

 

 

 

 

 

 

On으로 설정하였을 경우에 아파치웹서버의 에러문서에서 추가적인 정보(아파치의 버전, 가상호스트정보, 관리자의 Email주소등)를 보여주게 된다.

 

 

 

즉 에러페이지에 표시할 수 있는 추가정보를 보여줄 것인가(On) 또는 말것인가(Off) 또는 Email을 보여줄 것인가를 설정하는 것이다.

 

 

 

(On 또는 Off 또는 EMail중의 하나를 설정 할 수 있다. )

 

 

 

 

 

 

 

 

HostnameLookups Off

 

 

 

 

 

 

 

 

웹서버의 로그(access_log)에 보면 방문자들에 대한 웹문서 접근기록을 남겨두고있다.

 

 

 

이 로그파일에 보면 방문자들의 IP주소들이 기록되어있다.

 

 

 

즉 이 지시자는 웹로그파일(access_log)에 방문자에 대한 주소를 IP주소로 기록 할 것인가(Off) 또는 도메인명(On)으로 기록할 것인가를 결정하는 지시자이다.

 

 

 

 

기본값으로는 Off로 설정되어 있으며 이는 각 방문자들의 접근기록을 IP주소로 기록하게 되고 만약 On으로 설정하였을 경우에는 모든 IP주소에 대해서 DNS에 질의하여 해당 IP주소에 대한 도메인정보가 있을 경우에는 도메인명으로 남기게 되지만 도메인정보가 없는 IP주소에 대해서는 그냥 IP주소로 남겨지게 된다.

 

 

 

이 지시자에서 중요한 것은 방문자의 기록을 IP주소로 남기느냐 아니면 도메인명으로 남기느냐라는 것외에도 서버의 속도문제가 관련되어 있다.

 

 

 

즉 이 지시자의 값이 On으로 남겨지게 되면 수없이 많은 방문자들의 접근기록들을 남길때에 모든 IP주소에 대하여 DNS 질의를 하게 된다.

 

 

 

이때 서버에 다소 큰 부하가 발생하게 된다.

 

 

 

방문자수가 많은 사이트인 경우에는 가능하면 이 값을 Off로 설정해두는 것이 좋다.

 

 

 

 

 

conf/extra/httpd-into.conf

 

 

아파치실행모니터링과 실행상태정보를 설정하는 아파치설정파일이다.

 

 

 

자세히 살펴보자.

 

 

 

 

 

 

 

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from .example.com

</Location>

 

 

 

 

 

 

 

서버의 상태를 점검할 수 있게하는 설정이다.

 

 

 

이는 http://www.sulinux.net/server- status 또는 http://192.168.0.111/server-status와 같이 서버의 상태를 점검해 볼 수 있다.

 

 

 

여기서 지정한 "SetHandler 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.c모듈이 로드되어야 하며, 이는 http://www.sulinux. net/server-info” 또는 http://192.168.0.111/server-info”와 같은 방법으로 아파치웹서버의 정보를 볼 수 있다.

 

 

 

위에서 설정한 server-status와 함께 실행중인 웹서버의 상태점검을 위한 것이다.

 

 

 

즉 서버의 설치 및 버전정보 그리고 API정보 모듈정보 호스트네임정보등과 같이 매우 다양한 정보를 확인해 볼 수 있다.

 

 

 

 

 

conf/extra/httpd-languages.conf

 

 

다른 언어들을 어떻게 표현할 것인가에 대한 아파치 설정파일이다.

 

 

 

자세히 살펴보자.

 

 

 

 

# DefaultLanguage nl

AddLanguage ca .ca

AddLanguage cs .cz .cs

AddLanguage da .dk

AddLanguage de .de

AddLanguage el .el

AddLanguage en .en

AddLanguage eo .eo

AddLanguage es .es

AddLanguage et .et

AddLanguage fr .fr

AddLanguage he .he

AddLanguage hr .hr

AddLanguage it .it

AddLanguage ja .ja

AddLanguage ko .ko

AddLanguage ltz .ltz

AddLanguage nl .nl

AddLanguage nn .nn

AddLanguage no .no

AddLanguage pl .po

AddLanguage pt .pt

AddLanguage pt-BR .pt-br

AddLanguage ru .ru

AddLanguage sv .sv

AddLanguage tr .tr

AddLanguage zh-CN .zh-cn

AddLanguage zh-TW .zh-tw

 

 

 

 

 

 

 

 

DefaultLanguage지시자와 AddLanguage지시자는 웹문서의 언어를 지정하기 위한 지시자이다.

 

 

 

웹브라우즈(클라이언트)가 이해할 수 있는 언어를 제공하기 위한 설정이다.

 

 

 

이 설정으로 인하여 사용자가 이해할 수 있는 언어로 브라우징하기 위한 컨텐츠협상을 사용할 수 있다.

 

 

 

 

 

 

 

 

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 tr zh-CN zh-TW

 

 

 

 

 

 

 

 

LanguagePriority는 언어의 우선순위를 내림차순으로 지정한다.

 

 

 

LanguagePriority는 컨텐츠협상 도중에 어떤 언어를 먼저 사용할 것인가에 대한 순서를 결정한 것이다.

 

 

 

 

 

 

 

 

 

AddDefaultCharset EUC-KR

 

 

 

 

 

 

 

 

이 지시자는 외부로 보내지는 모든 웹문서들에 대하여 기본 charset을 지정한 것이다.

 

 

 

가능한 국제표준적인 charset을 사용하기 위하여 ISO-8859-1을 지정하여 사용하면 된다.

 

 

 

만약 EUC-KR언어셋으로 서비스 한다면 위와 같이 설정한다.

 

 

 

 

 

 

 

 

 

AddCharset us-ascii.ascii .us-ascii

AddCharset ISO-8859-1 .iso8859-1 .latin1

AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen

AddCharset ISO-8859-3 .iso8859-3 .latin3

AddCharset ISO-8859-4 .iso8859-4 .latin4

AddCharset ISO-8859-5 .iso8859-5 .cyr .iso-ru

AddCharset ISO-8859-6 .iso8859-6 .arb .arabic

AddCharset ISO-8859-7 .iso8859-7 .grk .greek

AddCharset ISO-8859-8 .iso8859-8 .heb .hebrew

AddCharset ISO-8859-9 .iso8859-9 .latin5 .trk

AddCharset ISO-8859-10 .iso8859-10 .latin6

AddCharset ISO-8859-13 .iso8859-13

AddCharset ISO-8859-14 .iso8859-14 .latin8

AddCharset ISO-8859-15 .iso8859-15 .latin9

AddCharset ISO-8859-16 .iso8859-16 .latin10

AddCharset ISO-2022-JP .iso2022-jp .jis

AddCharset ISO-2022-KR .iso2022-kr .kis

AddCharset ISO-2022-CN .iso2022-cn .cis

AddCharset Big5.Big5 .big5 .b5

AddCharset cn-Big5 .cn-big5

 

 

 

 

 

 

 

 

일반적으로 사용되는 파일 이름과 확장자의 charset이다.

 

 

 

RFC에 반영된 charset리스트에 자세한 내용을 확인하려면 다음 URL을 참고하기 바란다.

 

 

 

 

http://www.iana.org/assignments/character-sets

 

 

 

 

 

AddCharset WINDOWS-1251 .cp-1251 .win-1251

AddCharset CP866 .cp866

AddCharset KOI8 .koi8

AddCharset KOI8-E .koi8-e

AddCharset KOI8-r .koi8-r .koi8-ru

AddCharset KOI8-U .koi8-u

AddCharset KOI8-ru .koi8-uk .ua

AddCharset ISO-10646-UCS-2 .ucs2

AddCharset ISO-10646-UCS-4 .ucs4

AddCharset UTF-7 .utf7

AddCharset UTF-8 .utf8

AddCharset UTF-16 .utf16

AddCharset UTF-16BE .utf16be

AddCharset UTF-16LE .utf16le

AddCharset UTF-32 .utf32

AddCharset UTF-32BE .utf32be

AddCharset UTF-32LE .utf32le

AddCharset euc-cn .euc-cn

AddCharset euc-gb .euc-gb

AddCharset euc-jp .euc-jp

AddCharset euc-kr .euc-kr

 

 

 

 

 

 

 

 

위의 charset은 러시안(russian)들을 위한 charset이다.

 

 

 

 

 

 

 

 

AddCharset EUC-TW .euc-tw

AddCharset gb2312 .gb2312 .gb

AddCharset iso-10646-ucs-2 .ucs-2 .iso-10646-ucs-2

AddCharset iso-10646-ucs-4 .ucs-4 .iso-10646-ucs-4

AddCharset shift_jis .shift_jis .sjis

 

 

 

 

 

 

 

 

그리고 위의 charset리스트는 ISO표준에 해당되지 않는 charset이다.

 

 

 

하지만 특정 브라우즈등에서 사용할 수도 있으므로 그대로 설정해두는 것이 좋다.

 

 

 

이에 대한 자세한 내용 또한 아래 URL에서 확인하실 수 있다.

 

 

 

 

http://www.iana.org/assignments/character-sets

 

 

 

conf/extra/httpd-manual.conf

 

 

아파치웹서버의 매뉴얼제공에 대한 설정파일이다.

 

 

 

 

 

 

 

 

AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|pt-br|ru|tr))?(/.*)?$ "/usr/local/apache/manual$1"

 

<Directory "/usr/local/apache/manual">

Options Indexes

AllowOverride None

Order allow,deny

Allow from all

 

<Files *.html>

SetHandler type-map

</Files>

# .tr is text/troff in mime.types!

<Files *.html.tr.utf8>

ForceType text/html

</Files>

 

SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|pt-br|ru|tr)/ prefer-language=$1

RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|pt-br|ru|tr)){2,}(/.*)?$ /manual/$1$2

 

LanguagePriority en de es fr ja ko pt-br ru tr

ForceLanguagePriority Prefer Fallback

</Directory>

 

 

 

 

 

 

 

 

아파치 매뉴얼문서들을 로딩가능하도록 설정한 것으로 각 언어별로 가장 적합한 메뉴얼문서를 보여주기 위한 설정이다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  113 명