'2010/10'에 해당되는 글 1건

  1. 2010/10/02

1 .궁금한것은요 가상호스트에서 사용하는 도메인은 임의로(공인도메인이 아님) 설정해도 되는지요 ?

  - 공인도메인이 아닐시 내부적으로 연결하여 사용하실수 있습니다. 내부 테스트 가능 하다는 이야기지요

     하지만 외부에서는 공인도메인이 아님으로 연결하실수 없습니다.

2. 공인 도메인을 사용해야 한다면 도메인 등록업체에 네임서버 설정을 어떻게 해야하는지요?

  - 등록업체의 해당 도메인의 IP 를 아파치서버(서비스할서버) 의 IP로 맞춰주면 됩니다. 확인 방법은

     도메인등록 업체의 IP 를 서비스서버의 IP에 맞춰준후 해당도메인으로 핑또는 nslookup

     을 사용하여 테스트 해보실수 있습니다. 예) nslookup 해당도메인  , ping 해당도메인

3. httpd.conf 화일에서만 설정하면되는지요 ?

 - 그렇습니다. httpd.conf 에서만 설정해도 충분합니다. 여러개의 도메인을 보유하고있으며 웹서버가 하나일

    경우 가상 호스트 방식을 사용하여 연결 하면 되겠씁니다.

    예) 제가 가지고있는 자료중 붇혀넣기 하였습니다.

아파치 웹 서버는 한대의 서버로 가상 호스트 기능을 지원 합니다. 이렇기 때문에 리눅스에다가 아파치 웹 서버 기반으로 하여 웹 호스팅 서비스를 많이 하고 있습니다. http.conf 부분에서 이부분이 가장 먼저 이해 해야 한다 생각 합니다

 

### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at <
URL:http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
#NameVirtualHost *

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *>
#    ServerAdmin
webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

 

가상 호스팅 방법은 IP 기반, 이름 기반, 포트 기반 의 가상 호스팅이 있습니다. 설정 부분에는 대부분 비슷 비슷 합니다. 대체적으로 기본사항을 적어 보겠습니다.


<VirtualHost *>
    ServerAdmin
webmaster@dummy-host.example.com
    DocumentRoot /www/docs/dummy-host.example.com
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

 

부분을 수정하여 사용 합니다.

ServerAdmin 부분은 가상호스트 관리자 Email주소 입니다. 홈페이지에 에러가 출력되면 관리자 한테 메일이 가겠죠~!

 DocumentRoot  부분은  가상호스트의 홈페이지 웹문서파일이 저장되어 있는 위치입니다. 이부분에 index 파일이 저장됩니다.

ServerName  가상 호스트의 도메인 명입니다. DNS에 저장되어야 하겠죠~!

ErrorLog 에러로그파일이 저장될 위치 입니다.

CustomLog 가상호스트의 웹로그파일이 저장되는 위치를 지정합니다. 저장포멧종류도 지정하구요~!

 

- httpd.conf 중 맨 아래쪽에 가상호스트 적용 부분이 있습니다. 그중 위의 <VirtualHost *> 부분부터 </VirtualHost> 의 안에 있는 내용을 수정하시고 아파치 재시작 하시면 됩니다.

 

4. 아니면 DNS 서버운용을 해야 하는지요 ? 저는 DNS서버를 운용하지 않고 도베인업체 네임서버를

    이용해서 사용할려고 합니다. 가능한지요??

 - 네 도메인 등록 업체 자체의 DNS 를 사용하셔도 됩니다. 자체적으로 DNS 를 구성시 좋은 점은 도메인에 대해 실질적으로 관리 및 적용을 실시간으로 할수있으며 적용시점(TTL : 인터넷 상에 도메인 정보가 살아있는 시간) 을 자기 맘대로 조정할수가 있고 여러가지 세부적인 사항들을 조정할수있어서 편하죠 ^^ 전 전적으로 DNS 서버를 구축하는것에 찬성입니다 ^^

 

5. DNS 서버를 운용해야 한다면 도메인업체의 네임서버 셋팅을 어떻게 해야하는지요 ?

    1,2차네임과 1,2차 IP를 어떻게 만들어야 하는지요?

 - 대부분의 도메인업체 에 보면 네임서버 세팅 부분이 있습니다. 거기에 해당 DNS의 IP 주소를 입력하면 적용 됩니다. 테스트는 위에 언급한듯이 ping 또는 nslookup 으로 테스트해보실수있습니다.

 - 1차 및 2차 네임서버 의 구성에 대해서 까지 설명드리려면 ;; 너무 길어지기 때문에 인터넷 상에 나와있는 자료만으로도 충분히 구성 가능하리라 생각되며 자료 또한 많음으로 찾아보시면 되겠습니다.

 

6. 현재 공유기 에서 공유기회사의 DDNS 서비스를 받고 DMZ설정을 내부 서버PC로 IP가 고정되어 있습니다.

    공유기에서 다른설정이 필요한지요 ?

 - 서비스하는 PC 의 포트를 열어줄 필요가 있습니다. 웹서버일 경우 80 포트를 열어주고 DNS 일경우 TCP,UDP 53 포트를 열어주면 되겠습니다.

 

7. 혹시 http.conf 화일 전체를 예로 설명해주시면 감사하겠습니다.

 -

1:아파치 전체 환경 설정

시작에 앞서~~

 

아파치를  설치 하셨다면 아파치 환경 설정 부분이 있을 겁니다.

(소스로 컴파일 하셧다면 /usr/local/apach/conf/http.conf

RPM 으로 설치 하셨다면 /etc/httpd/conf/httpd.conf )

 

 

저는 소스로 컴파일 하여

vi  /usr/local/apach/conf/http.conf 로 하여 살펴 보았습니다.

 

http.conf (Apache 의 환결 설정 부분)을 보시면~크게 3가지 분류로 나누어 집니다. 

첫번째로 아파치 프로세스의 전체적인 부분인 아파치

 전체 완경 설정 부분(Global Environment  )

두번째로 아파치 가상호스트가 아닌 메인 서버의 작동을 지시하는 지시자로 구성되어 있는

메인 서버 환경 설정('Main' server configuration )

세번째로 가상호스트 기능을 지원하는

 가상 호스트 설정(Virtual Hosts)으로 나눈다

 

지금 보실 부분은 첫번째인 전체 환경 설정 부분(Global Environment)을 보시도록 하겠습니다.

 

##

## httpd.conf  -- Apache HTTP server configuration file

##

### Section 1 : Global Environment (전체환경설정부분)

# ServerType is Either inetd, or standalone. Inetd mode is only supported on

# Unix platforms.

#

 

ServerType standalone

 

요부분은 서버의 시작이 어떻게 할 것인지 설정하는 부분으로 standalone 과 Inetd 방식이 있습니다. standalone부분은 글자 그대로 아파치 웹 데몬을 단족으로 실행 하고자 할때 사용하고, Inetd 부분은 슈퍼데몬(xinetd모드) 사용 할때 이용 한다 쉽게 말해 슈퍼데몬방식은 클라이언트가 요청할 때에만 대응 하는 것이고 standalone은 데몬이 커널 프로세스상에서 항상 작동하고 있다.

 

#

# ServerRoot: The top of the directory tree under which the server's

# cinfiguration, error, and log files are kept.

#

# NOTE! If you intend to place this on an NFS (or otherwise network)

# mounted filesystm then please read the LockFile documentation

# (available at URL:http://www.apache.org/docs/mod/core.html#lockfile);

# you will save yourself a lot of trouble.

#

 

ServerRoot "/usr/local/apache"

 

 

이부분은 서버의 설정, 에러, 로그 파일이 기록되는 디렉토리를 말합니다. /usr/local/apache가 서버루트 디렉토리의 기본 경로 입니다.

 

#

# The LockFile directive sets the patth to the lockfile used when Apache

# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or

# USE_FLOCK_SERIALIZED_ACCEPT. this directive should be left at

# its default value. The main reason for changing it is if the logs

# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL

# DISK. The PID of the main server process is automatically appended to

# the filename.

#

#LockFile/usr/local/apache/logs/httpd.lock

 

요부분은 아파치 컴파일을 USE_FCNTL_SERIALIZED_ACCEPT  나USE_FLOCK_SERIALIZED_ACCEPT의 옵션으로 하였을 경우 잠금 파일의 경로를 설정할 때 사용 합니다. 대부분 기본 설정값은 사용하지 않으므로 설정되어 있습니다.

 

#

# PidFile: The file in which the server should record its process

# identification number when it starts.

#

 

PidFile/usr/local/apache/logs/https.pid

 

웹서버가 시작 할때 process id num을 기록하는 파일입니다. 대부분의 프로세서가 갖는 ID 가 정장되는 디렉토리는   /var/run 디렉토리 입니다.

 

#

# ScoreBoarFile: File used to store internal server process information.

# Not all architectures require this. But if yours does (you'll know because

# this file will be created when you run Apache) then you *must* ensure that

# no two invocations of Apache share the same scoreboars file.

#

 

ScoreBoardFile /usr/local/aoache/logs/http.scoreboard

 

내부 서버 프로세서의 정보를 저장하는 파일인데 .  아키텍처에서 필요할 경우 서로 다른 아파치 웹 서버 데몬이 같은 파일을 공유하지 않아야 한다

 

 

#

# In the standard configuration, the server will process httpd.conf (this

# file, specified by the -f command line option), srm.conf, and access.conf

# in that order. The latter two files are now distributed empty, as it is

# recommented thet all directives be kept in a single file for simplicity.

# The commented-out  values below are the bulit-in a single file for simplicity.

# server ignore these file altogether by using "/dev/null" (for Unix) or

# "nul" (for Win32) for the arguments to the directives.

#

 

#ResourceConfig conf/srm.conf

#AccessConfig conf/access.conf

 

아파치 1.3.6이전의 버젼에서는 srm, access.conf 파일을 httpd.conf  파일을 함께 읽었지만 이후엔 통합되어 관리가 편해졌습니다. 즉, srm, access.conf 파일을 따로 설정해서 사용하 수 있도록 합니다.  서버가 이파일의 내용을 무시하게 하기 위해서는 "dev/null" (유닉스) 또는 "nul" (윈32) 값을 지정해야 합니다.

 

#

# Timeout: The number of seconds before receives and send time out.

#

 

Timeout 300

 

클라이언트가 서버에 요청한 정보를 받을 때 소요되는 시간을 정해 주는 것으로 단위는 초이다. 기본은 300으로 설정되어 있습니다. 서버 성능에 따라 적당한 값을 적어주면 효율적인 서버 관리를 할 수 있습니다.

 

#

# KeepAlive : Whether or not to allow persistent connections (more than

# one request per connection) . Set to "off" to deactivate.

#

 

KeepAlive On

 

 

지속적인 접속, 즉 한 번 연결에 대해 한번이상 요청을 할 것인가 여부를 결정하는 부분입니다 기본적으로 On값이 적용 됩니다. 이것도 서능저하때문인데 예를 들어 자식프로세서가 한가지 일만 처리하고 죽는 것이 아니라 다음 일도 처리함으로 성능항상을 유지합니다.

 

#

# MaxKeepAliveRequests: The maximum number of requests to allow

# during a persistent connection. Set to 0 to allow unlimited amount.

# We recommend you leave this number high, for maximum performance.

#

 

MackeepAliveRequests 100

 

keepAlive가 설정 되어 있을 때, 지속적인 접속 동안 허용할 최대횟수를 지정하는 것으로,

클라이언트의 요청을 몇 번이나 처리하고 다시 처음 상태로 돌아가는지를 설정합니다.

만약 설정이 "0"이면 클라이언트가 접속을 끊을 때까지 계속 연결 상태로 있습니다.

최대 성능 향상을 위해 보통은 높은 값을 사용 합니다.

 

#

# keepAliveTimeout: Number of seconds to wait for the next request from the

# same client on the connection.

#

 

KeepAliveTimeout 15

 

keepAlive가 설정되어 있을 경우 정해진 초 안에 클라이언트의 요청이 없을 경우 접속을 끊거나 기다리는 시간을 설정 합니다.

 

 

#

# Server-pool size regulation. Rather than making you guess how many

# server processes you need, Apache dynamically adapts to the load it

# sees --- that is, it tries to maintain enough server processes to

# handle spikes (e.g., multiple simultaneous requests from a single

# Netscape browser).

#

# It does this by periodically checking how many server are waiting

# for a request. If there are fewer than MinSpareServers, it creates

# a new spare. If there are more than MaxSpareServers, some of the

# spares die off. The default values are probably OK for most sites.

#

 

MinSpareServers 5

MaxSpareServers 10

 

 

시스템 자원을 고려하여 프로세스 개수를 조절하는 서버 풀을 설정합니다. 여기 설정된 디폴트 값은 대부분의 서버에 적합한 상태입니다. 즉, 클라이언트의 요청이 많은 사이트라면 적당히 이 값들을 증가 또는 감소해서 사용해야 합니다. 아파치는 최소값과 최대값을 정해 줌으로써 클라이언드의 요청이 많은 많은 경우든 적은 경우든 쉽게 프로세서를 늘리고 줄일 수 잏도록 하는 겁니다. 아파치는 클라리언드의 요청이 적을 경우 또는 최소삾보다 프로세서가 적을 경우에는 자동적으로 최소 여유 서버의 개수에 맞추도록 노력하구요 최대값 보다 프로세서가 많을 경우라면 자동적으로 최대여유 서버의 개수에 맞추어 주도록 노력합니다.

 

#

# Number of server to start initially --- should a reasonable ballpark

# figure.

#

 

StartServers 5

 

처음 웹 서버가 시작할 깨 실행죌 서버의 개수를 StartServers로 지정해 줍니다.

 

#

# Limit on total number of server running, i.e., limit on the number of clients who can       # simultaneously connect --- if this limit is ever reached, clients will be LOCKED OUT, so # it should NOT BE SET TOO LOW. It is intended mainly as a brake to keep a runaway    # server from taking the system with it as it spirals down..

#

 

MaxClients150

 

동시에 아파치 서버에 접속할 수 있는 클라이언트의 개수를 지정합니다. 클라이언트가 최대로 접속했을 때 실행 가능한 최대 서버의 수를 지정합니다. 이값을 수정할 경우 MinSpareServer, MaxSpareServer, StartServer 의 값도 같이 조정해 주어야 합니다. 즉. 최대값을 넘어서는 새로운 클라이언트의 요청은 앞의 요청이 끝날 때까지 대기 상태로 있어야 합니다. 또한 아파치 소스 파일 가운데 https.h 파일을 젼핍하여 HARD_SERVER)LIMIT=256을 원하는 수만큼 변경시켜 컴파일 해야 합니다. 이 설정은 아파치 서버가 자원의 낭비를 막고 서버 부하가 생기는 것을 막기 위해 사용 합니다.

 

#

# MaxRequestsPerChild: the number of requests each child process is allowed to 

# process before the child dies.  The child will exit so as to avoid problems after   

# prolonged use when Apache (and maybe the libraries it uses ) leak memory or other 

# resources. On most systems, this isn't really needed, but a frw (such as Solaris) do  

# have notable leaks in the libraries. For these platforms, set to something like 10000 or 

# so; a setting of 0 means unlimited.

#

# NOTE: This value does not include keepalive requests after the initial

#       request per connection. For example, if a child process handles

#       an initial request and 10 subsequent "keptalive" requests, it

#       would only count as 1 request towards this limit.

#

 

MaxRequestsPerChild 0

 

각각의 자식 프로세서가 죽기 전까지 처리할 수 있는 요청 개수를 설정 합니다. 대부분 하나의 프로세서가 오랫동안 사용되면 메모리 또는 자원 누출 현상이 발생할 수 있으므로 이 프로세서는 자동으로 제거 됩니다. 하솔라리스 같은 경우에는 설정이 필요하다 하네요...

 

#

# Listen: Allows you to bind Apache to specific IP addresses and/or

# ports, in addition to the default. See also the <VirtualHost>

# directive.

#

#Listens 3000

#Listens 12.34.56.78:80

 

아파치를 특정 IP 또는 포트와 결합시킬때 사용합니다.

 

#

# Binaddress: You can support virtual hosts with this option. This directive

# is used to tell the server which IP address to listen to. It can either

# contain '*', an IP addrss, or a fully qualified Internet domain name.

# See also the <VirtualHost> and Listens directive.

#

#Binaddress *

 

가상 호스트를 지원하기 위해 설정하는 부분 입니다. 옵션에 '*', "IP address", "인터넷 도메인 이름" 을 사용 합니다.

 

#

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding "LoadModule" lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Please read the file README.DSO in the Apache 1.3 distribution for more

# details about the DSO mechanism and run "httpd -l" for the list of already

# built-in (statically linked and thus always available) modules in your httpd

# binary

#

# Note: The order in which modules are loaded is important. Don't change

# the order below without expert advice.

#

# Example:

# LoadModule foo_module libexec/mod_foo.so

 

Dynamic Shared Object (DSO: 동적 공유 객체) 를 사용하기 위해서 모듈을 지시하는 설정입니다. DSO의 작동 방식을 보려면 아파치 1.3 배포판의 README.DSO 파일을 참고 하시고. 사용자들이 직접 httpd 바이너리에 내장된 모듈 목록을 확인 하시려면 "http  -l" 명령을 실행하여 볼 수 있습니다. 주의해야 하실 점은 모듈 적재의 순서는 중용 사항이므로 아무렇게나 바꾸면 안됩니다.

 

 

#

# ExtendedStatus controls whether Apache will generate "full" status

# information ( ExtendedStatus On ) or just basic information ( ExtendedStatus

# off ) when the "server - status" handler is called. The default is off.

# 

# ExtendedStatus On

 

"server - status" 가 호출되었을 때 아파치에 대한 자세한 서버 상태 정보를 만들 것인지 여부를 설정 합니다.   off 일 경우 기본적인 사항의 정보만 생성 합니다.

 

2:메인 서버 환경 설정

### 02 : " main" server configuration

#

# Port : The port to which the standalone server listens. For

# ports <1023, you will need https to be run as root initially.

#

 

Port 80

 

독립형 서버(Standalone)가 대기하는 포트를 설정 합니다.

 

#

# If you wish httod to run as a differenf user or group, you must run

# httpd as root initially and it will switch.

#

# User/Group : The name (or @number ) of  the user / group t run httpd as.

#  . On SCO ( ODT 3 ) use "User nouser" and "Group nogroup" .

#  . On HPUX you may not be able to use shared memoey as nobody, and the

#    suggested workaround is to create a user www and use that user.

# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)

# when the value of (unsigned)Group is above 60000;

# don't use Group nobody on these systems !

#

 

User nobody

Group nobody

 

독립형 서버에서 사용 되며, 웹서버를 실행할 때  소유권을 갖게 되는 사용자와 그룹 이름을 지정합니다.. 일반적으로 서버에서 작업 프로세서는  nobody 로 설정 해 줍니다. 보안 때문에 이렇게 설정 하는 것이고, 만약 nobodoy 로 설정되어진 상태라면 텔넷으로의 접근 또한 막아야 합니다. SCO (ODT 3) 의 경우 User nouser , Group nogroup으로 설정해 줍니다.

 

#

# ServerAdmin : Your address, where problems with the server should be

# e-mailed. This address appears on some server-generated pages, such

# as error documents.

#

 

ServerAdmin root@linux,linux.net

 

서버에 문제가 생겼을 경우 메일을 보낼 주소를 적어 주는 곳입니다. 이주소는 에러 문서와 같이 서버가 생성하는 페이지에 나타납니다.

 

 

#

# ServerName allows you to set a host name which is sent back to clients for

# your server if it's different than the one the program would get ( i.e., use

# "www"  instead of the host's real name ) .

#

# Note: you cannot just invent host name and hope they work. The name you

# define here must be a valid DNS name for your host. If you don't understand

# this, ask your network administrator.

# If your host doesn't have a registered DNS name, enter its IP address here.

# You will have to access it by its addtess (e.g.,  http://123.45.67.89/)

# anyway, and this will make redirections work in a sensible way

#

# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. your

# machine always knows itself by this address. If you use Apache strictly for

# local testing and development, you may use 127.0.0.1 as the server name.

#

 

#ServerName linux.linux.net

 

클라이언트에 여러분의 서버 이름을 호스트 이름 이외레 다른 이름으로 되돌려 두고자 할 때 사용 합니다. 만약 사용 자들이 등록된 DNS 를 가지고 있다면 그것을 적어주면 되고 클라이언트에 보낼 서버이름이 다를 경우 호스트의 실제 이름이 아닌 www 를 사용하게 할 수고 있습니다. 만약 사용자가 DNS 가 존재하지 않는 것이라면 개인 홈페이지 서비스에도 영향을 주기 때문에 설정시 유의 해야 합니다.

 

 

#

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

#

 

DoumentRoot "/usr/local/apache/htdocs"

 

기본적인 htlm 또는 php 등의 관련 문서의 기본 디렉토리를 설정 합니다. 또한 심벌릭 링크 또는 앨리어스를 사용하여 다른 위치를 적어 줄수도 있습니다.

 

#

# Each directory to which Apache has access, can be configured with respect

# to which services and fratures are allowed and / or disabled in that

# dierctory ( and its subdirectories ) .

#

# First, we configure the "default" to be a very restrictive set of

# Permissions.

#

 

<Directory  />

Options FollowSymKinks

AllowOverride None

</Directory >

 

특정 디렉토리를 제어할 때 사용하는 지시자를 <Directory  />...<Directory>의 형태로 작성하며, 각각의 디렉토리에 관한 권한 등의 여러가지 설정을 하는 곳이다. 가능한 옵션은 다음과 같다.

 .None : 어떤 옵션도 이용할 수 없으므로 모든 접근을 거부

 .All : MultiViews 옵션을 이용할 수 있으므로 모든 접근을 허용

 .Indexes : URL에 지정된 디렉토리에 (index.html 같은) 지정된 파일이 없을 경우 디렉토리의 파일 목록을 보여주는 옵션

 .Includes : 서버측의 추가적인 정보를 제공

 . FollowSymLinks : 디렉토리의 심벌릭 링크 사용 가능

 . ExecCGI : CGI 스크립트를 실행할 수 있도록 함

 . MultiViews : All 옵션이 설정되었을 때만 지정된 목록의 multiviews 를 허용

AllowOverride는 사용자 인증에 관련된 지시자로 클라이언트가 웹 서버의 특정 디렉토리에 접근 할 때 해당 디렉토리에 있는 사용자 인증 파일인 .htaccess 파일을 읽게 되는데, 여기를 None으로 설정하면 아파치 서버는 이파일을 무시합니다.

 

#

# Note that from this point forward you must specifically allow

# particular features to be endbled - so if something's not working as

# you might expect, make sure that you specifically enabled it

# below.

#

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/usr/local/apache/htdocs">
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
    Options                 Indexes FollowSymLinks MultiViews
#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
    AllowOverride           None
#
# Controls who can get stuff from this server.
#
    Order                    allow,deny
Allow from all
</Directory>

 

Order 명령은 해당 디렉토리에 대한 IP, DNS 필터링 순서를 설정 합니다. Allow 는 호스트 접근을 허락하며, Deny 는 접근을 불허 합니다. Allow from all은 호스트로부터의 접근을 허락한다는 뜻이며, Deny from all 은 모든 호스트로부터의 요청을 거부 한다는 뜻입니다.

 


#
# UserDir: The name of the directory which is appended onto a user's home
# directory if a ~user request is received.
#
<IfModule mod_userdir.c>
    UserDir public_html
</IfModule>

 

 

개인 홈페이지 서비스를 위한 개인 홈페이지 디렉토리 설정 부분 입니다. 즉, 개인의 디렉토리에 public_html 디렉토리를 만들면 홈페이지 서비스를 받을 수 있습니다. 만약 이러한 경우에 클라이언트들이 이 서버를 요청하기 위해서는 틸드문자(~) 를 사용아혀 메인 웹 서버의 URL에 계정을 다음과 같이 붙입니다.

http://www.linux.linux.net/~linux


#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>

 

개인 홈페이지 디렉토리에 대한 접근 권한 등을 설정 합니다, <Limit></Limit>로 각각의 접근을 제어할 수도 있습니다. 옵션들은 앞부분에서 설명한 대로 하면 됩니다. 물론 사용자 인증도 할 수 있습니다. 여기에 사용한 '*'는 사용자의 기본 디렉토리이므로, 각 사용자의 디렉토리로 바꾸어 주면 됩니다.

 

#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index.  Separate multiple entries with spaces.
#

<IfModule mod_dir.c>
 DirectoryIndex        index.php index.php3 index.php4 index.html

</IfModule>

 

클라이언트가 웹 서버에 대한 요청이 있을 때 웹 서버가 위에서 지정한 순서대로 HTML 문서를 실행하여 클라이언트에게 전달 합니다. 여기에 나열한 웹 문서들은 반드시 웹 서버 디렉토리나 사용자 웹 서버 디렉토리에 존재해야 합니다. 여기에는 한 개 이상 나열리 가능하며, 앞에 설명한 디렉토리 설정에서 Optionindexes 로 되어 있으며, DirectoryIndex 지시자에 표시한 파일이 디렉토리에 없을 경우 해당 디렉토리와 파일들은 목록화되어 브라우저에 나타납니다.

 


#
# AccessFileName: The name of the file to look for in each directory
# for access control information.
#
AccessFileName .htaccess

 

각각의 디렉토리의 접근을 제어하는 정보를 가진 파일 이름을 지정하며 웹 클라이언트들이 .htaccess 파일을 볼 수 없도록 설정 합니다. 여기에서 사용하는   .htaccess는 권한 정보를 가지고 있으므로 보안 유지 차원에서 접근을 허용해서는 안 됩니다. 즉, 파일을 제어하려는 디렉토리에 넣어 사용 합니다.

#
# The following lines prevent .htaccess files from being viewed by
# Web clients.  Since .htaccess files often contain authorization
# information, access is disallowed for security reasons.  Comment
# these lines out if you want Web visitors to see the contents of
# .htaccess files.  If you change the AccessFileName directive above,
# be sure to make the corresponding changes here.
#
# Also, folks tend to use names such as .htpasswd for password
# files, so this will protect those as well.
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

 

웹 클라이언트에게 .htaccess 파일을 볼 수 있을지 여부를 결정하는 것으로 옵션은 앞에 설명한 부분과 같습니다.

 

#
# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
# document that was negotiated on the basis of content. This asks proxy
# servers not to cache the document. Uncommenting the following line disables
# this behavior, and proxies will be allowed to cache the documents.
#
#CacheNegotiatedDocs

 

아파치는 기본적으로 협상된 문서에 대해서는 <Pragma: no-cache> 내용을 보내는데 이 설정은 프록시 서버들이 문서를 캐시하지 못하게 요청합니다.  '#'를 제거하고 옵션을 실행하면 모든 프록시가 문서를 캐시할 수 있게 합니다.

 


#
# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
# Apache needs to construct a self-referencing URL (a URL that refers back
# to the server the response is coming from) it will use ServerName and
# Port to form a "canonical" name.  With this setting off, Apache will
# use the hostname:port that the client supplied, when possible.  This
# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
#
UseCanonicalName On

 

자기 참조 URL을 만들 필요가 있을 때마다 공식적인 이름을 만들기 위해 ServerName과 Port를 사용 합니다. off 일 경우 아파치는 가능할 경우 클라이언트가 제공하는 hostname:port를 사용합니다. 이것은 또한 CGI 스크립트의 SERVER_NAME 와 SERVER_PORT에도 영향을 줍니다.

 


#
# TypesConfig describes where the mime.types file (or equivalent) is
# to be found.
#
<IfModule mod_mime.c>
    TypesConfig /usr/local/apache/conf/mime.types
</IfModule>

 

mime.type 파일의 위치를 설정 합니다. MiME은 Multipurpose Internet Mail Extension의 약자로 클라이언트 브라우저에게 어떠한 유형의 자료를 전송할 것인지를 조절해 주는 기능 입니다.

 

#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

 

서버에서 사용 되는 문서 중 MIME 타입으로 알 수 없는 문서에 대해 적용항 기본 MIME 타입을 설정 합니다. 디폴트 값은 text/plain,이며 이 값은 주로 서버에 문서 파일이 많을 경우에 사용 합니다. 만일 바이너리나 실행 파일이 많을 경우라면 이 옵션은 application/octet-stream으로 적어주면 됩니다. 이것은 웹 브라우저가 실행 파일 등을 텍스트 문서로 착각하고 브라우저상에 표시하지 않게 하기 위합니다.

 

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
# mod_mime_magic is not part of the default server (you have to add
# it yourself with a LoadModule [see the DSO paragraph in the 'Global
# Environment' section], or recompile the server and include mod_mime_magic
# as part of the configuration), so it's enclosed in an <IfModule> container.
# This means that the MIMEMagicFile directive will only be processed if the
# module is part of the server.
#
<IfModule mod_mime_magic.c>
    MIMEMagicFile             /usr/local/apache/conf/magic
</IfModule>

 

mod_mime_magic 모듈을 사용할 경우 해당 파일의 내용으로 파일 타입 힌트를 얻는 역할을 합니다. MIMEMagicFile 명령은 암시를 정의하는 모듈이 어디에 위치하고 있는지를 알려주는 것으로 이것을 사용하기 위해서는 해당 모듈을 탑재해야 합니다.

 

#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g.,
www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

 

아파치는 서버에 접속하는 클라이언트 IP를 확인하고 확인한 주소를 DNS 서버에 다시 의뢰하는 작업을 하기 때문에 상당한 시간을 요하게 됩니다. on으로 설정하면 도메인 이름으로 기록하고 off 로 설정하면 호스트 주소로 기록합니다.

 

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog /usr/local/apache/logs/error_log

 

아파치 서버에서 에러가 발생되었을 때 에러를 기록할 파일의 위치를 적어 줍니다. <VirtualHost>지시자에서 ErrorLog 설정을 하지 않았다면 여기에서 언급한 설정을 따릅니다.

로그 파일의 경우는 계속 용량이 증가하기 때문에 수시로 용량을 줄여야 합니다

 

 

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

 

로그메시지의 크기를 제어하는 부분입니다. 옵션에는 debug, info, notice, warn, error, crit,alert, emerg 등이 있습니다.

 #
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here.  Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#

 

 


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

 

 

클라이언트들이 웹 서버에 접근한 정보를 기록해 주는 access_log 파일의 위치를 설정 합니다.<VirtuaHost> 지시자에서 이 설정 부분이 없을 경우 여기서 설정한 위치로 모두 저장됩니다. 가상 호스트별로 따로 접근 로그 파일을 만들고 싶을땐 이 설정을 각각의 <VirtualHost> 지시자안에 널어 주어야 합니다.

 

#
# If you would like to have agent and referer logfiles, uncomment the
# following directives.
#

 


#CustomLog /usr/local/apache/logs/referer_log referer
#CustomLog /usr/local/apache/logs/agent_log agent

 

브라우저(agent)와 접속자(referer) 기록 파일을 갖고자 한다면 위 주석을 제거 합니다

 

 

#
# If you prefer a single logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#

 

#CustomLog   /usr/local/apache/logs/access_log combined


 

access, agent, referer 정보를 하나의 파일에 모두 저장하기를 원한다면 combined 옵션을 이용 합니다.

 


#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (error documents, FTP directory listings,
# mod_status and mod_info output etc., but not CGI generated documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
#


 

ServerSignature                On

 

아파치 서버가 생성하는 페이지 (에러문서, FTP 디렉토리 목록, mod_status, mod_info output, CGI 생성 문서 제외)에 서버 버전과 가상 호스트 이름을 포함하는 행을 넣는 것을 설정 합니다. 옵션에 는 On | Off | Email 등이 있고 On 으로 설정 하시면 서비스중 가상 호스트의 이름과 서버 버전을 포함한 라인을 보여주고, Email 의 경우 ServerAdmin으로의  mailto: 링크도 포함됩니다.

 


# EBCDIC configuration:
# (only for mainframes using the EBCDIC codeset, currently one of:
# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
# The following default configuration assumes that "text files"
# are stored in EBCDIC (so that you can operate on them using the
# normal POSIX tools like grep and sort) while "binary files" are
# stored with identical octets as on an ASCII machine.
#
# The directives are evaluated in configuration file order, with
# the EBCDICConvert directives applied before EBCDICConvertByType.
#
# If you want to have ASCII HTML documents and EBCDIC HTML documents
# at the same time, you can use the file extension to force
# conversion off for the ASCII documents:
# > AddType       text/html .ahtml
# > EBCDICConvert Off=InOut .ahtml
#
# EBCDICConvertByType  On=InOut text/* message/* multipart/*
# EBCDICConvertByType  On=In    application/x-www-form-urlencoded
# EBCDICConvertByType  On=InOut application/postscript model/vrml
# EBCDICConvertByType Off=InOut */*


 

EBCDIC 코드 셋을 사용하는 사용하는 메인 프레임을 위한 설정 입니다. EBCDIC 는 IBM이 대형 운영체계에서 사용하기 위해 개발한 알파벳 숫자를 위한 바이너리 코드를 말합니다. EBCDIC는 IBM S/390 서버의 운영체계인 OS/390 에서 사용되는 텍스트 파일용 코드로서 많은 회사들이 자기 회사의 오래된 응용 프로그램과 데이터베이스를 위해 아직도 사용 하고 있습니다. 그러나 IBM PC나 워크스테이션용 운영체계에서는 텍스트 표현 방법에 있어서 자신들의 고유한 체제인 EBCDIC 대신 산업계 표준코드인 ASCII 를 사용합니다. EBCDIC 파일내에서 각 알파벳이나 숫자는 8bit의 2진수로 표현되므로 총 256개의 문자가 정의 됩니다.

 

#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
<IfModule mod_alias.c>

    #
    # Note that if you include a trailing / on fakename then the server will
    # require it to be present in the URL.  So "/icons" isn't aliased in this
    # example, only "/icons/".  If the fakename is slash-terminated, then the
    # realname must also be slash terminated, and if the fakename omits the
    # trailing slash, the realname must also omit it.
    #

    Alias /icons/ "/usr/local/apache/icons/"

    <Directory "/usr/local/apache/icons">
        Options MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>

웹 문서 루트 디렉토리(DocumentRoot dir) 외의 다른 디렉토리에서도 문서를 저장할 수 있게해 주는 별칭을 설정하는 부분입니다. 별칭의 설정은 Alias  /별칭/  " path" 하면 됩니다. 별칭 사용시에 별칭 다음에 '/' 를 적어주면 별칭을 표현할 때 /별칭/ 이렇게 표현해야 됩니다. 디렉토리 설정은 앞에서 사용한 옵션을 사용하면 됩니다. 별칭은 하나 이상 여러 개 만들어 사용 가능하기 때문에 필요한 만큼 만들어 사용하면 됩니다.

 

 

#
    # ScriptAlias: This controls which directories contain server scripts.
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the realname directory are treated as applications and
    # run by the server when requested rather than as documents sent to the client.
    # The same rules about trailing "/" apply to ScriptAlias directives as to
    # Alias.
    #
    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

 

Alias는 원하는 디렉토리에 대한 별칭을 뜻하는 것으로 사용하는 것 이외에도 Docu,entRoot 디렉토리 외에 존재하는 문서들을 관리하거나 비교적 긴 이름을 가진 웹 디렉토리를 짧게 사용하기 위해서도 사용 합니다.

 


    #
    # "/usr/local/apache/cgi-bin" should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have that configured.
    #
    <Directory "/usr/local/apache/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
</IfModule>

# End of aliases.

#
# Redirect allows you to tell clients about documents which used to exist in
# your server's namespace, but do not anymore. This allows you to tell the
# clients where to look for the relocated document.
# Format: Redirect old-URI new-URL
#

서버에 존재하지 않는 문서에 접근해 올 경우 현재 존재하는 문서로의 위치를 바꿔주는 설정입니다. 즉, 옛날에 사용하던 URL 로 접속하는 사용자를 위애 새로운 URL로 이동하게 해 주는 것 입니다.

 


# Directives controlling the display of server-generated directory listings.
#
<IfModule mod_autoindex.c>

    #
    # FancyIndexing is whether you want fancy directory indexing or standard
    #
    IndexOptions    FancyIndexing

디렉토리 목록을 표시해 줄 때 표준으로 보여줄 것인지, 아니면 파일에 대한 약간의 정보를 추가해서 표시해 줄 것인지를 결정합니다. 만약 표시한 파일이 존재하지 않을 경우 디렉토리와 파일들의 목록을 보여줄 때 디렉토리와 파일의 속성에 따른 아이콘을 사용할지 여부를 설정합니다.

 

 


    #
    # AddIcon* directives tell the server which icon to show for different
    # files or filename extensions.  These are only displayed for
    # FancyIndexed directories.
    #
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*

    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core

    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^

 

IndecOptions 에서  FancyIndexing 으로 설정되어 있을 경우에 사용되며 각각의 파일 및 확장자에 따른 아이콘의 모양을 정해 줍니다.

 


    #
    # DefaultIcon is which icon to show for files which do not have an icon
    # explicitly set.
    #
    DefaultIcon /icons/unknown.gif

 

앞에서 설정되어 있지 않은 파일에 대하여 사용하는 아이콘 입니다.

 


    #
    # AddDescription allows you to place a short description after a file in
    # server-generated indexes.  These are only displayed for FancyIndexed
    # directories.
    # Format: AddDescription "description" filename
    #
    #AddDescription "GZIP compressed document" .gz
    #AddDescription "tar archive" .tar
    #AddDescription "GZIP compressed tar archive" .tgz

서버에서 만들어지는 인덱스에 있는 파일 뒤에 짧은 주석을 달 수 있도록 합니다. 위의 경우에는 확장자가 .gz 이면  "GZIP compressed document" 라는 설명을 보여주게 됩니다.

 


    #
    # ReadmeName is the name of the README file the server will look for by
    # default, and append to directory listings.
    #
    # HeaderName is the name of a file which should be prepended to
    # directory indexes.
    #
    ReadmeName README.html
    HeaderName HEADER.html

서버가 디렉토리 목록 뒤에 붙여넣을 README 파일의 이름을 설정하며, HeaderName은 디렉토리인덱스 앞에 내용을 넣을 파일의 이름을 설정합니다. 즉, 디렉토리 목록을 보여줄 때 화면의 아랫부분에 간단한 설명이 들어갈 파일을 지정하는 것 입니다. 예를 들면, 서버는 처음 name.html 파일을 찾고 존재하면 그내용을 포함합니다. 만약 파일이 존재하지 않는 다면 name.txt 를 찾고 txt 내용으로 포함합니다.

 

 

    #
    # IndexIgnore is a set of filenames which directory indexing should ignore
    # and not include in the listing.  Shell-style wildcarding is permitted.
    #
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

디렉토리를 인덱스할 때 파일이 보이지 않게 설정하는 부분입니다.

 


    #
    # IndexIgnore is a set of filenames which directory indexing should ignore
    # and not include in the listing.  Shell-style wildcarding is permitted.
    #
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

</IfModule>
# End of indexing directives.

#
# Document types.
#
<IfModule mod_mime.c>

    #
    # AddLanguage allows you to specify the language of a document. You can
    # then use content negotiation to give a browser a file in a language
    # it can understand.
    #
    # Note 1: The suffix does not have to be the same as the language
    # keyword --- those with documents in Polish (whose net-standard
    # language code is pl) may wish to use "AddLanguage pl .po" to
    # avoid the ambiguity with the common suffix for perl scripts.
    #
    # Note 2: The example entries below illustrate that in quite
    # some cases the two character 'Language' abbreviation is not
    # identical to the two character 'Country' code for its country,
    # E.g. 'Danmark/dk' versus 'Danish/da'.
    #
    # Note 3: In the case of 'ltz' we violate the RFC by using a three char
    # specifier. But there is 'work in progress' to fix this and get
    # the reference data for rfc1766 cleaned up.
    #
    # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
    # French (fr) - German (de) - Greek-Modern (el)
    # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
    # Portugese (pt) - Luxembourgeois* (ltz)
    # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
    # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
    # Russian (ru)
    #
    AddLanguage da .dk
    AddLanguage nl .nl
    AddLanguage en .en
    AddLanguage et .ee
    AddLanguage fr .fr
    AddLanguage de .de
    AddLanguage el .el
    AddLanguage he .he
    AddCharset ISO-8859-8 .iso8859-8
    AddLanguage it .it
    AddLanguage ja .ja
    AddCharset ISO-2022-JP .jis
    AddLanguage kr .kr
    AddCharset ISO-2022-KR .iso-kr
    AddLanguage nn .nn
    AddLanguage no .no
    AddLanguage pl .po
    AddCharset ISO-8859-2 .iso-pl
    AddLanguage pt .pt
    AddLanguage pt-br .pt-br
    AddLanguage ltz .lu
    AddLanguage ca .ca
    AddLanguage es .es
    AddLanguage sv .sv
    AddLanguage cs .cz .cs
    AddLanguage ru .ru
    AddLanguage zh-TW .zh-tw
    AddCharset Big5         .Big5    .big5
    AddCharset WINDOWS-1251 .cp-1251
    AddCharset CP866        .cp866
    AddCharset ISO-8859-5   .iso-ru
    AddCharset KOI8-R       .koi8-r
    AddCharset UCS-2        .ucs2
    AddCharset UCS-4        .ucs4
    AddCharset UTF-8        .utf8

 

문서의 언어를 표시합니다. 즉 , 내용협상 과정을 통해 브라우저가 이해하는 언어의 문서를 제공할 수 있습니다. 폴란드어의 경우 펄과 구분하기 위해 pl  .po로 표기합니다.

 

 

    # LanguagePriority allows you to give precedence to some languages
    # in case of a tie during content negotiation.
    #
    # Just list the languages in decreasing order of preference. We have
    # more or less alphabetized them here. You probably want to change this.
    #
    <IfModule mod_negotiation.c>
        LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
    </IfModule>

 

내용 협상 과정에서 같은 순위를 가질 때 어느 언어에게 우선권을 부여할 것인지를 설정 합니다. 설정은 내림 차순으로 나열 합니다.

 


    #
    # AddType allows you to tweak mime.types without actually editing it, or to
    # make certain files to be certain types.
    #
    # For example, the PHP 3.x module (not part of the Apache disrtibution - see
    #
Http://www.php.net) will typicall use:
    #
    AddType application/x-fttpd-php .php3
    AddType application/x-fttpd-php .php4
    AddType application/x-fttpd-php .htm
    AddType application/x-fttpd-php .html
    AddType application/x-fttpd-php-source .phps

    #
    # And for PHP 4.x, use:
    #
    AddType application/x-fttpd-php .php
    AddType application/x-fttpd-source .phps
    AddType application/x-tar  .tgz

 

즉, mime.types의 수정 없이 mime를 설정 가능하게 해 줍니다. 아파치 1.3.12 일 경우는 PHP를 설정하는 부분이 따로 나와 있습니다. 그 이전 버전일 경우 위와 같이 설정을 하면 됩니다. 이것은 해당 확장자에 대한 특정 타입으로 실행되게 하는 것입니다. 만약 PHP를 사용 하고자 한다면 이부분을 수정 해야 합니다. 아래는 위에서 사용한 간단한 예를 보여 주는 것입니다.

    AddType application/x-fttpd-php .php        =  .php 확장자를 php 타입으로 실행
    AddType application/x-fttpd-source .phps  = .phps 확장자들은 php소스를 확인

    AddType application/x-fttpd-php .html        =  .html 확장자를 php 타입으로 실행

 


    #
    # AddHandler allows you to map certain file extensions to "handlers",
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action command (see below)
    #
    # If you want to use server side includes, or CGI outside
    # ScriptAliased directories, uncomment the following lines.
    #
    # To use CGI scripts:
    #
    #AddHandler cgi-script .cgi

 

특정 파일 확장자나 처리기에 연결하거나 특정 파일 타입에 특정 동작연결을 설정 하는 부분입니다. 즉, 어떤 파일 확장자를 파일 종류와 무관하게 작동할  수 있게 "Handler" 에 결합하도록 설정해 주는 것 입니다.

 


    #
    # To use server-parsed HTML files
    #
    #AddType text/html .shtml
    #AddHandler server-parsed .shtml

    #
    # Uncomment the following line to enable Apache's send-asis HTTP file
    # feature
    #
    #AddHandler send-as-is asis

    #
    # If you wish to use server-parsed imagemap files, use
    #
    #AddHandler imap-file map

    #
    # To enable type maps, you might want to use
    #
    #AddHandler type-map var

</IfModule>
# End of document types.

#
# Action lets you define media types that will execute a script whenever
# a matching file is called. This eliminates the need for repeated URL
# pathnames for oft-used CGI file processors.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#

 

매칭되는 파일이 불러질 때마다 해당 미디어 타입에 맞는 스크립트를 실행할 수 있으며, 이 설정은 자주 사용되는 CGI 파일 프로세서에 대해 반복적으로 URL을 사용하지 않아도 됩니다.

 


#
# MetaDir: specifies the name of the directory in which Apache can find
# meta information files. These files contain additional HTTP headers
# to include when sending the document
#
#MetaDir .web

 

MetaDir은 아파치가 메타 정보 파일을 찾을 디렉토리 이름을 말하는 것으로 이 파일에는 문서를 보낼 때 추가할 추가 HTTP 헤더 정보가 있으며, MetSuffix는 메타 정보를 가지고 있는 파일의 접미어를 설정 합니다.

 


#
# MetaSuffix: specifies the file name suffix for the file containing the
# meta information.
#
#MetaSuffix .meta
#
# Customizable error response (Apache style)
#  these come in three flavors
#
#    1) plain text
#ErrorDocument 500 "The server made a boo boo.
#  n.b.  the single leading (") marks it as text, it does not get output
#
#    2) local redirects
#ErrorDocument 404 /missing.html
#  to redirect to local URL /missing.html
#ErrorDocument 404 /cgi-bin/missing_handler.pl
#  N.B.: You can redirect to a script or a document using server-side-includes.
#
#    3) external redirects
#ErrorDocument 402
http://www.example.com/subscription_info.html
#  N.B.: Many of the environment variables associated with the original
#  request will *not* be available to such a script.

#
# Customize behaviour based on the browser
#
<IfModule mod_setenvif.c>

 

존재하지 않는 페이지를 요청 받을 경우 또는 해당 디렉코리의 퍼미션이 없을 경우 보여주는 에러메시지 설정 입니다. 관리자 임의로 다음 3가지 중 선택해서 출력해 줄 수 있습니다

   1) plain text  =  보통 텍스트 화면

   2) local redirects  = 내부 URL 로 방향 전환

   3) external redirects = 외부 URL 로 방향 전환

 


    #
    # The following directives modify normal HTTP response behavior.
    # The first directive disables keepalive for Netscape 2.x and browsers that
    # spoof it. There are known problems with these browser implementations.
    # The second directive is for Microsoft Internet Explorer 4.0b2
    # which has a broken HTTP/1.1 implementation and does not properly
    # support keepalive when it is used on 301 or 302 (redirect) responses.
    #
    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0

HTTP 응답 방식을 수정 합니다. 첫 번째 지시자는 넷스케이프 2.x 와 유사한 브라우저에 대해 KeepAlive 기능을 사용하지 못하게 하는 설정입니다. 두번째 지시자는 HTTP/1.1을 잘못 구현하녀 301, 302(리다이렉트) 응답에 대해 KeepAlive 를 제대로 지원하지 못하는 MS 익스플로러 4.0b2 를 위한 설정 입니다.

 


    #
    # The following directive disables HTTP/1.1 responses to browsers which
    # are in violation of the HTTP/1.0 spec by not being able to grok a
    # basic 1.1 response.
    #
    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 "WebZip" go_out
    BrowserMatch "Teleport" go_out
    BrowserMatch "GetRight" go_out

</IfModule>
# End of browser customization directives

 

HTTP/1.1 응답도 제대로 처리하지 못해 HTTP/1.1 spec를 위반하는 브라우저에 대해 HTTP/1.1응답을 하지 않게 하는 설정입니다.

 


#
# Allow server status reports, with the URL of
http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from aaa.com

</Location>

 

 

서버 상태 정보를 허용할 서버 이름을 적어 줍니다.

 


#
# Allow remote server configuration reports, with the URL of
#
http://servername/server-info (requires that mod_info.c be loaded).
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-info>
#    SetHandler server-info
#    Order deny,allow
#    Deny from all
#    Deny from all
#    Allow from aaa.com
#</Location>

 

원격서버의 환경 설정을 보고 받을 수 있습니다. 주의해야 할 점은 mod_info.c 가 로드되어 있어야 합니다.

 

 

 

#
# There have been reports of people trying to abuse an old bug from pre-1.1
# days.  This bug involved a CGI script distributed as a part of Apache.
# By uncommenting these lines you can redirect these attacks to a logging
# script on phf.apache.org.  Or, you can record them yourself, using the script
# support/phf_abuse_log.cgi.
#
#<Location /cgi-bin/phf*>
#    Deny from all
#    ErrorDocument 403
http://phf.apache.org/phf_abuse_log.cgi
#</Location>

전 1.1 버전에 있던 버그를 악용하려는 사람이 있는데, #을 제거하면 버그를 이용한 공격이 있을때 phf.apache.org상의 기록 스크립터로 방향 전환을 시키게 합니다. 또 다른 방법은 직접 support/php_abuse_log.cgi 스크립트를 이용해서 사용자 스스로가 저장하는 것 입니다.

 

3:가상호스트 설정

아파치 웹 서버는 한대의 서버로 가상 호스트 기능을 지원 합니다. 이렇기 때문에 리눅스에다가 아파치 웹 서버 기반으로 하여 웹 호스팅 서비스를 많이 하고 있습니다. http.conf 부분에서 이부분이 가장 먼저 이해 해야 한다 생각 합니다

 

### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at <
URL:http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
#NameVirtualHost *

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *>
#    ServerAdmin
webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

 

가상 호스팅 방법은 IP 기반, 이름 기반, 포트 기반 의 가상 호스팅이 있습니다. 설정 부분에는 대부분 비슷 비슷 합니다. 대체적으로 기본사항을 적어 보겠습니다.


<VirtualHost *>
    ServerAdmin
webmaster@dummy-host.example.com
    DocumentRoot /www/docs/dummy-host.example.com
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

 

부분을 수정하여 사용 합니다.

ServerAdmin 부분은 가상호스트 관리자 Email주소 입니다. 홈페이지에 에러가 출력되면 관리자 한테 메일이 가겠죠~!

 DocumentRoot  부분은  가상호스트의 홈페이지 웹문서파일이 저장되어 있는 위치입니다. 이부분에 index 파일이 저장됩니다.

ServerName  가상 호스트의 도메인 명입니다. DNS에 저장되어야 하겠죠~!

ErrorLog 에러로그파일이 저장될 위치 입니다.

CustomLog 가상호스트의 웹로그파일이 저장되는 위치를 지정합니다. 저장포멧종류도 지정하구요~!

 

 

가상 호스트 설정 부분은 어떻게 보면 어려운데 어떻게 보면 간단합니다. ㅎ_ㅎ;;


저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 1 And Comment 0