아파치 로그 쌓이지 않게하는 방법
'리눅스 > APACHE' 카테고리의 다른 글
보안서버 ssl 키, csr 및 crt 파일 생성 (0) | 2015.01.16 |
---|---|
도메인 리다이렉트(포워딩) 설정 (0) | 2015.01.16 |
아파치 웹서버 기본 출력 캐릭터셋 변경 (0) | 2015.01.16 |
아파치 최대 동시 접속자수(max_clients) 수정 (0) | 2015.01.16 |
웹서버 접속자 수 확인 (0) | 2015.01.16 |
보안서버 ssl 키, csr 및 crt 파일 생성 (0) | 2015.01.16 |
---|---|
도메인 리다이렉트(포워딩) 설정 (0) | 2015.01.16 |
아파치 웹서버 기본 출력 캐릭터셋 변경 (0) | 2015.01.16 |
아파치 최대 동시 접속자수(max_clients) 수정 (0) | 2015.01.16 |
웹서버 접속자 수 확인 (0) | 2015.01.16 |
도메인 리다이렉트(포워딩) 설정 (0) | 2015.01.16 |
---|---|
아파치 로그 쌓이지 않게하는 방법 (0) | 2015.01.16 |
아파치 최대 동시 접속자수(max_clients) 수정 (0) | 2015.01.16 |
웹서버 접속자 수 확인 (0) | 2015.01.16 |
보안서버 (mod_ssl) 설치 (0) | 2015.01.16 |
1. 아파치 2.0.xx 버전
기본 동시접속자수는 최대 256명. 이를 더 많은 숫자로 변경하기 위해서는 아래 파일 수정 후 재펌파일이 필요하다.
/apache/../server/mpm/prefork/prefork.c 파일에서
#define DEFAULT_SERVER_LIMIT 256 // 원하는 최대 접속자를 입력한다.
위에서 숫자 부분을 적당하게 늘려주고
/apache/../server/mpm/worker/worker.c 파일에서
#define DEFAULT_SERVER_LIMIT 16 // 아래 계산법 참고
위에서 숫자 부분을 적당하게 늘려준다.
예를 들어 prefork.c 파일에서 1280으로 늘려주었다면, worker.c 파일은 20으로 늘려주는데, 그 이유는 아래와 같다.
worker 방식은 기본적으로 16개의 child process와 그 안에 64개의 thread를 생성가능하므로, 16*64 = 1024가 된다. 따라서 prefork.c 파일에서 1280으로 늘려주게 되면, worker.c는 1280/64 = 20이 되므로 20으로 수정해 줘야 똑같이 1280명의 동시접속자가 가능하게 된다.
-----------------------------------------------------------------------------
[참고]
1. prefork.c 파일과 worker.c 파일을 같이 늘려줘야 합니다.
2. worker 의 경우 아래와 같은 방법으로 수정합니다. (prefork 는 MaxClients 만 늘려주면 됩니다.)
<IfModule worker.c>
StartServers 1024 // 기본값이 2 입니다.
MaxClients 65536 // 이처럼 최대 접속자를 높게 재설정할 경우 아래 계산법을 따릅니다.
ThreadsPerChild 64 // 프로세스당 쓰레드 수입니다. 기본값이 25 이며, 최대 64 까지 가능합니다.
</IfModule>
공식 : MaxClients / ThredsPerChild =< StartServers
MaxClients 를 정하고 ThreadsPerChild 를 나누면 StartServers 값이 나옵니다.
- 내용추가 (글쓴이)
2. 아파치 1.3.xx 버전
기본 동시접속자수는 최대 256명인데, 이는 MaxClients에 입력가능한 최대치를 말합니다.
256명 이상의 동시접속을 허용하고자 할 경우에는 아파치를 다시 재 컴파일해야 합니다.
아파치 디렉토리로 이동하여 ../src/include 안의 httpd.h 에서 다음과 같은 부분을 찾아
값을 높여 주시면 됩니다.
#define HARD_SERVER_LIMIT 512 // 원하는 최대 접속자를 입력한다.
위와같이 설정 한 후 http.h 파일을 재컴파일해야 정상적으로 적용이 됩니다.
만약 클라이언트가 512명 이상의 접속을 넘어서 이루어질 경우에는 다음과 같은 메시지가
로그파일에 남게 되며, 클라이언 트는 다른 요청의 접속이 끝날 때 까지 대기하거나
또는 특정시간이 지난 후 접속이 이루어질 수 없다는 메시지를 보여주게 된답니다 .
[error] server reached MaxClients setting, consider raising the MaxClients setting.
만약, 동시접속자 수를 기본 동시접속자 최대 수인 256명 미만으로 조정하고자 한다면,
재컴파일이 필요없이 아래 파일만 수정합니다.
../conf/httpd.conf
MaxClients 150
그리고, 아파치를 리스타트 하면 됩니다.
# apachectl restart
[출처] 내가사는이유 (http://kikook.tistory.com/492)
아파치 로그 쌓이지 않게하는 방법 (0) | 2015.01.16 |
---|---|
아파치 웹서버 기본 출력 캐릭터셋 변경 (0) | 2015.01.16 |
웹서버 접속자 수 확인 (0) | 2015.01.16 |
보안서버 (mod_ssl) 설치 (0) | 2015.01.16 |
Awstats 6.6 로그분석기 설치 (0) | 2015.01.16 |
# netstat -anlp |grep :80 |grep ES |wc -l
* 한 IP에 대하여 많은 세션이 보일 수 있으니 여러번 명령을 내려보아 판단해야 합니다.
* | uniq 로 중복되는 IP 추려 낼 수 있습니다.
아파치 웹서버 기본 출력 캐릭터셋 변경 (0) | 2015.01.16 |
---|---|
아파치 최대 동시 접속자수(max_clients) 수정 (0) | 2015.01.16 |
보안서버 (mod_ssl) 설치 (0) | 2015.01.16 |
Awstats 6.6 로그분석기 설치 (0) | 2015.01.16 |
아파치 특정폴더에 암호걸기 (htaccess / htpasswd 사용) (0) | 2015.01.16 |
apache 1.x 환경에서는 mod_ssl 를 설치해야하며
httpd 2.x 환경에서는 mod_ssl 설치를 생략합니다.
(httpd 2.x 에는 기본적으로 mod_ssl 모듈이 포함되어 있음)
1. 설치
openssl: http://www.openssl.org/source/
mod_ssl: http://www.modssl.org/source/
openssl 을 다운로드 받고 압축을 풉니다.
# ./config
# make
# make install
mod_ssl 을 다운로드 받고 압축을 풉니다.
# ./configure --with-apache=../apache_1.3.39 --with-ssl=/usr/local/ssl
[참고]
여기서 --with-apache=../apache_1.3.39 은 소스 디렉토리를 하며 (설치 디렉토리 아님)
mod_ssl 에 대하여 make, make install 은 할 필요가 없습니다.
2-1. apache 1.3.x 설치
아파치 소스 디렉토리에서
# ./configure --prefix=/usr/local/apache --enable-module=so --enable-shared=max ?enable-module=rewrite --enable-shared=rewrite --enable-module=ssl --enable-shared=ssl
# make
# make install
[참고]
64bit 시스템에서 make 시 -fPIC 관련 에러 메세지가 나타날 경우
/usr/local/ssl 디렉토리를 삭제하고 yum install openssh* 로 패키지 설치 후
mod_ssl 의 설치 옵션중 --with-ssl=/usr/local/ssl 대신 --with-ssl 으로 ./configure 를 다시 하면 됩니다.
2-2. httpd 2.x 설치
아파치 소스 디렉토리에서
# ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-mods-shared=all --enable-modules=shared --enable-rewrite --with-mpm=worker --enable-ssl
# make
# make install
환경 설정 및 CSR, KEY 파일 생성, CRT파일 적용은 별도 매뉴얼을 참고하시기 바랍니다.
아파치 최대 동시 접속자수(max_clients) 수정 (0) | 2015.01.16 |
---|---|
웹서버 접속자 수 확인 (0) | 2015.01.16 |
Awstats 6.6 로그분석기 설치 (0) | 2015.01.16 |
아파치 특정폴더에 암호걸기 (htaccess / htpasswd 사용) (0) | 2015.01.16 |
파일목록 숨기기 (0) | 2015.01.16 |
1. 최신버전 다운
http://awstats.sourceforge.net에서 최신버전을 다운로드 받을 수 있다.
Awstats는 보안이슈가 많으므로 반드시 최신버전을 다운로드 받을 수 있도록 한다.
2. 압축풀기
[root@localhost src]# tar zxvf awstats-6.6.tar.gz
3. 이동
[root@localhost src]# mv awstats-6.6 /usr/local/awstats
4. 권한설정
[root@localhost src]# chmod -R 705 /usr/local/awstats
5. awstats 설정파일 생성하기
[root@localhost tools]# cd /usr/local/awstats/tools
[root@localhost tools]# perl awstats_configure.pl
----- AWStats awstats_configure 1.0 (build 1.6) (c) Laurent Destailleur -----
This tool will help you to configure AWStats to analyze statistics for
one web server. You can try to use it to let it do all that is possible
in AWStats setup, however following the step by step manual setup
documentation (docs/index.html) is often a better idea. Above all if:
- You are not an administrator user,
- You want to analyze downloaded log files without web server,
- You want to analyze mail or ftp log files instead of web log files,
- You need to analyze load balanced servers log files,
- You want to 'understand' all possible ways to use AWStats...
Read the AWStats documentation (docs/index.html).
-----> Running OS detected: Linux, BSD or Unix
-----> Check for web server install
Found Web server Apache config file '/usr/local/apache/conf/httpd.conf'
-----> Check and complete web server config file '/usr/local/apache/conf/httpd.conf'
Warning: You Apache config file contains directives to write 'common' log files
This means that some features can't work (os, browsers and keywords detection).
Do you want me to setup Apache to write 'combined' log files [y/N] ? y <-- apache 로그형식을 combined로 했는지를 확인하고 있다. 아직combined로 안했더라도 나중에 설정하면 되므로 “y”
Add 'Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"'
Add 'Alias /awstatscss "/usr/local/awstats/wwwroot/css/"'
Add 'Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"'
Add 'ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"'
Add '' directive
AWStats directives added to Apache config file.
-----> Update model config file '/usr/local/awstats/wwwroot/cgi- bin/awstats.model.conf'
File awstats.model.conf updated.
-----> Need to create a new config file ?
Do you want me to build a new AWStats config/profile
file (required if first install) [y/N] ? y <-- 시스템에 awstats 를 처음 설정 하는 것인지 확인하고 있다. 처음이면 “y”를 아니면 “n”
----> Define config file name to create
What is the name of your web site or profile analysis ?
Example: www.mysite.com
Example: demo
Your web site, virtual server or profile name:
> www.domain.com <-- 설정 파일 이름을 정한다.
-----> Define config file path
In which directory do you plan to store your config file(s) ?
Default: /etc/awstats
Directory path to store config file(s) (Enter for default):
> (엔터) <-- 설정 디렉토리를 정한다. 보통 디폴트(/etc/awstats)로 설정한다.
-----> Create config file '/etc/awstats/awstats.www.domain.com.conf'
Config file /etc/awstats/awstats.www.domain.com.conf created.
-----> Restart Web server with '/sbin/service httpd restart'
-----> Add update process inside a scheduler
Sorry, configure.pl does not support automatic add to cron yet.
You can do it manually by adding the following command to your cron:
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.domain.com
Or if you have several config files and prefer having only one command:
/usr/local/awstats/tools/awstats_updateall.pl now
Press ENTER to continue...
A SIMPLE config file has been created: /etc/awstats/awstats.www.domain.com.conf
You should have a look inside to check and change manually main parameters.
You can then manually update your statistics for 'www.domain.com' with command:
> perl awstats.pl -update -config=www.domain.com
You can also read your statistics for 'www.domain.com' with URL:
> http://localhost/awstats/awstats.pl?config=www.domain.com
Press ENTER to finish...
httpd.conf 끝부분에 다음과 같은 내용이 추가 되었는지를 확인한다. 만약 추 가되지 않았다면 수동으로 만들어 준다.
[root@localhost tools]# vi /usr/local/apache/conf/httpd.conf
#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"
#
# This is to permit URL access to scripts/files in AWStats directory.
#
Options None
AllowOverride None
Order allow,deny
Allow from all
awstats의 설정파일을 적절히 수정해 주어야 한다.
위에서 설정파일을 www.domain.com로 만들어 주었으므로 /etc/awstats/awstats.www.domain.com.conf 파일을 찾아 수정해 주면 된다.
51 Line <-- www.domain.com 로그파일 위치
51 #LogFile="/var/log/httpd/mylog.log"
52 LogFile="/usr/local/apache/logs/domain_access_log" <-- 실제 사용되는 아파치 로그 파일
204 Line <-- awstats의 설치 위치
204 #DirData="/var/lib/awstats"
205 DirData="/usr/local/awstats"
894 Line <-- 언어선택
894 #Lang="auto"
895 Lang="ko"
로그파일 형식 combined 지정
★ 아직까지 apache access로그 형식을 combined 로 지정하지 않았다면 combined로 지정한다. 기존의 로그는 삭제한다.
1) httpd.conf 파일 내용중
# CustomLog logs/access_log common
CustomLog logs/access_log combined
2) vitual host 부분중
# CustomLog /usr/local/apache/logs/domain_access_log common
CustomLog /usr/local/apache/logs/domain_access_log combined
6. 로그 분석파일 만들기
[root@localhost tools]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.domain.com
Create/Update database for config "/etc/awstats/awstats.www.domain.com.conf" by AWStats version 6.6 (build 1.876)
From data in log file "/home/domain/public_html/logs/www.domain.com- access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 33732
Found 2 dropped records,
Found 855 corrupted records,
Found 0 old records,
Found 32875 new qualified records.
7. 웹상에서 awstats 확인하기
http://domain.com/awstats/awstats.pl?config=www.domain.com
8. 클론으로 로그 분석 파일 갱신하기
매시간 10분마다 로그 분석 파일을 갱신(시간은 적절히 설정)
# crontab -e
10 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.domain.com
이와 같은 방법으로 시스템내의 여러 웹사이트를 로그 분석 파일을 여러개 설정할 수 있다.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
9. awstats 디렉토리 아파치 인증 설정하기
awstats는 보안 이슈가 발생할 가능성이 많으므로 아피치 인증을 설정한다.
[root@domain wwwroot]# vi /usr/local/apache/conf/httpd.conf
Options None
AllowOverride All <-- 수정
Order allow,deny
Allow from all
[root@domain wwwroot]# vi .htaccess
AuthName "아이디와 암호를 입력하세요."
AuthType Basic
#AuthUserFile /usr/local/apache/conf/.htpasswd
AuthUsrFile /usr/local/awstats/wwwroot/.htpasswd
AuthGroupFile /dev/null
require valid-user
[root@domain wwwroot]# htpasswd -c .htpasswd admin
New password:
Re-type new password:
Updating password for user admin
웹상에서 apache 인증이 되는지 확인한다.
웹서버 접속자 수 확인 (0) | 2015.01.16 |
---|---|
보안서버 (mod_ssl) 설치 (0) | 2015.01.16 |
아파치 특정폴더에 암호걸기 (htaccess / htpasswd 사용) (0) | 2015.01.16 |
파일목록 숨기기 (0) | 2015.01.16 |
아파치의 httpd 로그파일 상세 분석 (0) | 2015.01.16 |
1. httpd.conf 수정
<Directory /mrtg/host_status/>
AllowOverride All <-- 필수 권한
Require all granted
</Directory>
2. .htaccess 파일 생성
인증을 받고 싶은 디렉토리로 가서 .htaccess 파일을 아래 내용으로 만들어 줍니다.
AuthName "User Authorization"
AuthType Basic
AuthUserFile /mrtg/host_status/.htpasswd <-- 암호 파일 위치. 같은 디렉토리가 좋음
Require valid-user
3. .htpasswd 파일 생성
# /usr/local/apache/bin/htpasswd -c /mrtg/host_status/.htpasswd admin
의 형식으로 치면 암호를 넣으라고 나오는데 여기에 암호를 적어 넣으면 됩니다. (admin 은 계정 이름)
* 이때 -c 옵션은 처음 넣을때만 하면되며 그 다음 부터 추가 할 때는 필요가 없습니다.
그 다음에도 -c 옵션을 추가하면 이전 것(.htpasswd)은 지워버리고 새로 작성하게 됩니다.
그러면 .htpasswd의 파일 내용이 아래와 같이 생성되어 집니다.
admin:NoWPewwtesgrTR
4. 아파치 재가동
# /usr/local/apache/bin/apachectl restart
5. 완성!
보안서버 (mod_ssl) 설치 (0) | 2015.01.16 |
---|---|
Awstats 6.6 로그분석기 설치 (0) | 2015.01.16 |
파일목록 숨기기 (0) | 2015.01.16 |
아파치의 httpd 로그파일 상세 분석 (0) | 2015.01.16 |
httpd.conf 파일에 대한 설명 (0) | 2015.01.16 |
아파치 보안설정 - 파일목록 숨기기
/usr/local/apache/conf/httpd.conf 파일의
DocumentRoot 옵션아래
<Directory "/usr/local/www">
Options Indexes FollowSymLinks
</Directory>
로 되어 있습니다.
위의 경우는 해당 디렉토리내에 index.html .htm .php 등의
파일이 없는경우 해당 디렉토리의 파일 목록을 리스트업 해서 보여줍니다.
아래와 같이 수정합니다.
<Directory "/usr/local/www">
Options Includes NoExec
</Directory>
위와 같이 수정 후 아파치 프로세스를 재가동 합니다.
# /usr/local/apache/bin/apchectl restart
Awstats 6.6 로그분석기 설치 (0) | 2015.01.16 |
---|---|
아파치 특정폴더에 암호걸기 (htaccess / htpasswd 사용) (0) | 2015.01.16 |
아파치의 httpd 로그파일 상세 분석 (0) | 2015.01.16 |
httpd.conf 파일에 대한 설명 (0) | 2015.01.16 |
아파치1.3 + 톰캣 연동하기 (0) | 2015.01.16 |
httpd 로그 상세 분석 신광식 2000. 8 . 24
로그툴 제작에 많은 도움이 되시기 바랍니다.
도움이 되셨다면 제 홈페이지 많이 방문해 주세요. 도움되는글 많이 가져가세요.
단, 꽁짜는 아닙니다.. 무섭죠? ^^*
제가 영어 실력이 모자라서 잘못 해석된 부분도 있으니 연락주시면
수정해서 다시 올리겠습니다.
===========================================================================
로그분석 프로그램 개발에 활용도 가능합니다. ( 심심할때 만들자!!! )
===========================================
* 로그 파일은 아래의 정보로 얼마나 웹관리에 유용한 정보를 추출하느냐가
로그툴의 좋은지 나쁜지를 평가하는 관건이고,
결과물을 얼마나 보기쉽고, 사용하기 쉽게 출력하느냐 일것 같습니다.
통계학적 지식 : 55 %
프로그래밍지식 : 35 %
기타(디자인및..) : 10 %
* 시장성.. : 제 생각에는 서버 시장의 40 % 정도는 로그툴을 사용해야 될것 같습니다.
신빙성 있는 자료 현재 없음. ( 찾아서 분석하면 +- 오차 10%정도 날듯 )
아파치 로그파일 기록되는 위치
/var/log/httpd/acccess.log
로그 기록 내용
211.36.215.78 - manager [22/Jun/2000:23:09:09 +0900] "GET / HTTP/1.1" 200 5
------------- --- ---- --------------------------- --- -- -------- --- -
1 2 3 4 5 6 7 8 9
1 : 접속한 클라이언트의 IP 주소, 혹은 도메인
2 : REMOTE_IDENT (RFC 931 identification (아이데터퍼케이션:동일함 확인)
- 서버가 RFC 931 을 지원하는 경우 이 환경 변수에 클라이언트 시스템에서
CGI프로그램을 실행시킨 사용자 이름이 저장된다고 합니다. 몰겠습니다.
아직 한번도 여기 뭔가가 찍힐것 확인못해서..
3 : 사용자이름( .htaccess .htpasswd 에 정의된 사용자 id )
4 : 클라이언트(사용자 브라우저)의 접속시간정보 ( httpd 접속시간 )
(구성 : [day/month/year:hour:minute:second zone])
5 : 클라이언트(사용자 브라우저) 요청종류 ( GET , POST )
6 : 클라이언트가 요청한 홈페이지 URL 주소 ( 요청한 자료 & 자료위치 )
7 : 프로토콜 버젼
8 : 상태코드 ( 예. 200 정상처리 )
9 : 전송데이터 크기
상태코드 일부 304 은 - (하이픈) 로 표시
hits - 모든상태코드포함
files - 상태코드 200번만
통계 프로그램 Webalizer(웹알리저) 2.00 기준 입니다.
응답 코드별 히트수
------------------
아래 코드는 상태 코드 입니다.
클라이언트가 서버에게 요청했을때 결과에 대한 상태 코드죠..
여기서 설명한 상태 코드 외에도 더 있지만 차후 추가 하겠습니다.
이 용어는 알아두셔야 될듯..
* entity body
엔터티 본체는 요청/응답 메시지를 통해서 전달될 수 있는
데이타 자체를 나타내는 바이트 스트림(byte stream:흐름)이다.
? 말은 거창 한데.. 그냥 데이타 보내고 받는 부분입니다.
=====================================================
이 스트림은 엔터티 헤더에서 지정되는 데이타 타입과 인코딩 형식을
============= ========================
갖게 된다.
Code 200 - OK 오케바링~
사용자가 요청한 (get , post) 가 성공적으로 수행되었을때..
요청한 처리 결과를 클라이언트에게 전달되는 정보는 사용된 메소드(method:방법)
에 따라서 다라진다.. 위에 get 이나 post 가 있습니다. --;..
Code 206 - Partial(퍄셜) Content(컨텐트) ( 일부 내용 )
서버가 요청을 처리 했지만 클라이언트에게 일부만 전달되었을때..
------------------------------------------------------------
Code 301 - Moved Permanently(퍼머렌트리) ( 영구히,불변하게 이동했따 )
요청된 자원의 URL 값이 완전히 변경되었으므로 앞으로는 새로운 URL 값을
---------------------------------------------------------------------
사용하여야 한다. 새로운 URL 값은 location(로케이션,위치) 헤더를 통해서
----------------
클라이언트에 전달된다. 또한, HEAD method 를 제외한 모든 경우에 요청
메시지의 entity body를 통해서 새로운 URL의 하이퍼 링크를 포함하는
짧은 메세지를 전달해 주어야 한다.
웹 브라우저는 post method 를 사용한 요청의 결과로 301 상태코드를 전달받는
경우에는 자동으로 새로운 URL에 접속을 해서는 안된다.
반드시, 사용자의 확인을 거쳐야 한다.
-------------------------------------------
Code 304 - Not Modified ( 수정 모했따 )
conditional(컨디셔널) 잠정적인(조건부의,가정적인) get method가 사용된 경우에
전달된다. Request(리퀘스트 : 요구)를 처리한 결과 If-Modified-since 헤더에
지정된 날짜/시간 이래로 지정된 문서가 변경된 사실이 없는 경우 서버는
이 상태코드로 응답해야 한다. 이때, entity body(실제 본문) 는 전송되지 않는다. (?)
-------------------------------------
웹브라우저 캐쉬사용 출력 속도 향상
Code 400 - Bad Request ( 잘못 요청 )
Request(리퀘스트:요청) 메세지의 syntax(신택스:구문)가 잘못되어서
서버가 request 를 처리할 수 없다. 재 접속을 하는 경우에 클라이언트는
반드시 올바른 request메시지를 사용해야 한다.
Code 401 - Unauthorized (언어더라이즈드 : 권한없는, 허가받지 않은 )
Request가 user authentication을 필요로 한다는 것을 클라이언트에게
알려주기 위해서 사용된다. WWW-Authenticate 헤더를 통해서
요청된 자원에 적용되는 challenge를 전달한다.
401 response(리스판(폰)스:감응,응답) 를 받은 클라이언트는 적절한
Authorization(어더리제이션:위임,권한부여)
credentials(크리덴셜:신용즐명물)를
포함하는 Authorization 헤더와 함께 다시 Request 메시지를 전송한다.
Request 메시지에 그와 같은 Authorization credentials이 포함된 경우에
401 상태코드가 전달되면 user authentication(어던트케잇:인증)
-----------------------------------------------------------
이 실패한 것을 나타낸다. - 인증 실패
------------------------
Code 404 - Not Found ( 못 찾았다 )
Request-URL(요청 URL)에 해당하는 자원을 찾을 수 없을 경우에 사용된다.
그런 상태가 일시적인 것인지 아니면 언제나 그렇게 되는지를 나타내는
어떤 정보도 전달되지 않는다.
이런 상태를 클라이 언트에게 알리고 싶지 않을 경우에는 403 상태코드
를 대신 사용해도 된다.
* 403 코드 : Forbidden(퍼비든:출입금지구역)
■ 일반적 의미
● 페이지뷰(page view)
웹사이트의 특정 웹페이지에 이용자가 접속하여 페이지의 내용이 브라우저에 나타날때, 그 1회의 접속을 1 페이지뷰라 정의한다.
페이지뷰는 동일인이 중복 접속하여도 그 숫자가 계속 증가하게 설정이 가능하다.
● 히트(Hit)수
한명의 사용자가 웹서버의 한파일에 접속하는 것을 말한다. 히트수는 웹사이트의 인기를 측정하는 단위로 사용되고 있지만
사실 잘못 알고 있는 것이다.
어떤 사이트의 히트수가 `10’이라고 해서 10명의 이용자가 방문한 것은 아니다. 요컨대, 히트란 서버의 한 파일 접속수이기 때문에
한 사이트에 이미지가 10개가 포함되어 있다면 히트수는 이미지 10개와 웹페이지 1개를 포함한 11이 되는 것이다.
통계 프로그램 Webalizer(웹알리저) 2.00 기준 입니다.
● Hits
Any request made to the server which is logged, is considered a 'hit'.
The requests can be for anything... html pages, graphic images, audio
files, cgi scripts, etc... Each valid line in the server log is
counted as a hit. This number represents the total number of requests
that were made to the server during the specified report period.
설명이 좀이상한건지 .. 전 이거 해석해도 정확하게 이해가 안갑니다...
돌머리라서 그런지..
※ 암튼 모든 서버 요청 기록을 말합니다.
위에 일반적인 hit 수 개념으로 생각하시면 됩니다.
● Files
Some requests made to the server, require that the server then send
something back to the requesting client, such as a html page or graphic
image. When this happens, it is considered a 'file' and the files
total is incremented. The relationship between 'hits' and 'files' can
be thought of as 'incoming requests' and 'outgoing responses'.
설명이 좀이상한건지 .. 전 이거 해석해도 정확하게 이해가 안갑니다...
돌머리라서 그런지..
※ 이거뚜 좀 이상해서 소스 뒤적여 봤거든요..
이건 위에 말하는 outgoing responses(나가는응답?) 중에서도..
정확하게 나간거.. 그러니까 제가 위에 상태코드 적어 놓은거중에서도..
200 번으로 끝나는 수치의 총계 입니다..
====================================
● Pages / pageviews
This does not include the other stuff that goes into a document,
such as graphic images, audio clips, etc...
이미지, 오디오 클립, 기타제외
초기값 '.htm', '.html', '.cgi' 페이지 만인정
A lot of sites will probably define other extensions,
such as '.phtml', '.php3' and '.pl' as pages as well.
많은 사이트는 더우기 '.phtm의 같은 다른 확장자 ,
'.php3'과 '.pl' 만큼 페이지로 아마 규정할 것입니다.
Some other programs (and people :) refer to this as 'Pageviews'.
" 페이지 뷰 " 라고도 한답니다.
● Sites (사이트)
/var/log/httpd/acccess.log
로그 기록 내용
211.36.215.78 - manager [22/Jun/2000:23:09:09 +0900] "GET / HTTP/1.1" 200 5
------------- --- ---- --------------------------- --- -- -------- --- -
1 2 3 4 5 6 7 8 9
1 : 접속한 클라이언트의 IP 주소, 혹은 도메인
============================================
2 : REMOTE_IDENT (RFC 931 identification (아이데터퍼케이션:동일함 확인)
- 서버가 RFC 931 을 지원하는 경우 이 환경 변수에 클라이언트 시스템에서
CGI프로그램을 실행시킨 사용자 이름이 저장된다고 합니다. 몰겠습니다.
아직 한번도 여기 뭔가가 찍힐것 확인못해서..
3 : 사용자이름( .htaccess .htpasswd 에 정의된 사용자 id )
4 : 클라이언트(사용자 브라우저)의 접속시간정보 ( httpd 접속시간 )
(구성 : [day/month/year:hour:minute:second zone])
5 : 클라이언트(사용자 브라우저) 요청종류 ( GET , POST )
6 : 클라이언트가 요청한 홈페이지 URL 주소 ( 요청한 자료 & 자료위치 )
7 : 프로토콜 버젼
8 : 상태코드 ( 예. 200 정상처리 )
9 : 전송데이터 크기
상태코드 일부 304 은 - (하이픈) 로 표시
hits - 모든상태코드포함
files - 상태코드 200번만
Each request made to the server comes from a unique 'site', which can
be referenced by a name or ultimately, an IP address. The 'sites'
number shows how many unique IP addresses made requests to the server
during the reporting time period. This DOES NOT mean the number of
unique individual users (real people) that visited, which is impossible
to determine using just logs and the HTTP protocol (however, this
number might be about as close as you will get).
영문 설명에 좀 그래서.. 원문이 더 쉬우면 참고하시구요..
1번의 경우로 사이트 수를 검사할수밖에 없습니다, 이 수가 각각의 사용자
즉 IP 1개가 1사용자를 의미하지는 않습니다. *^^
(실제 사용자)공정한 기록을 결정하기에는 어렵습니다.
★ 왜일까요?
인터넷 사용자 중에는 방화벽이나 IP 공유 기능을 이용해 인터넷 상에서
사용되는 IP 가 아닌 내부 IP (192.168.0.1 ~ 또는 172.0.0.1 ~ etc..) 로 사용
하는 경우가 있습니다. 그럴경우 인터넷 상의 IP 정의는 1개지만..
사용자는 수백명 또는 수천명이 될수도 있습니다.
그래서 정확한 기록 결정을 내리기가 힘들다는 거죠.. *^^ 참고 되셨길..
● Visits (방문)
The default timeout value is 30 minutes (can be changed),
so if a user visits your site at 1:00 in the afternoon,
and then returns at 3:00, two visits would be registered.
디폴트 타임아웃 값은 30분(변경할수있다) 입니다,
===============================================
그렇게 사용자가 오후에 1시00분에(서) 당신의 사이트를 방문한다면,
3시00분에(서) 돌아옵니다, 2 의 방문이 기록되었습니다.
==========================
Note: Visits only occur on
PageType requests, that is, for any request whose URL is one of the
'page' types defined with the PageType option. Due to the limitation
of the HTTP protocol, log rotations and other factors, this number
should not be taken as absolutely accurate, rather, it should be
considered a pretty close "guess".
페이지 형은 PageType 옵션을 가지고 정의를 내렸습니다.
★ 현재 셋팅 상태
PageType htm*
PageType cgi
PageType moum
PageType phtml
PageType php3
PageType pl
● KBytes
/var/log/httpd/acccess.log
로그 기록 내용
211.36.215.78 - manager [22/Jun/2000:23:09:09 +0900] "GET / HTTP/1.1" 200 5
------------- --- ---- --------------------------- --- -- -------- --- -
1 2 3 4 5 6 7 8 9
1 : 접속한 클라이언트의 IP 주소, 혹은 도메인
============================================
2 : REMOTE_IDENT (RFC 931 identification (아이데터퍼케이션:동일함 확인)
- 서버가 RFC 931 을 지원하는 경우 이 환경 변수에 클라이언트 시스템에서
CGI프로그램을 실행시킨 사용자 이름이 저장된다고 합니다. 몰겠습니다.
아직 한번도 여기 뭔가가 찍힐것 확인못해서..
3 : 사용자이름( .htaccess .htpasswd 에 정의된 사용자 id )
4 : 클라이언트(사용자 브라우저)의 접속시간정보 ( httpd 접속시간 )
(구성 : [day/month/year:hour:minute:second zone])
5 : 클라이언트(사용자 브라우저) 요청종류 ( GET , POST )
6 : 클라이언트가 요청한 홈페이지 URL 주소 ( 요청한 자료 & 자료위치 )
7 : 프로토콜 버젼
8 : 상태코드 ( 예. 200 정상처리 )
9 : 전송데이터 크기
====================
상태코드 일부 304 은 - (하이픈) 로 표시
hits - 모든상태코드포함
files - 상태코드 200번만
전송데이터의 모두 합한 총계 입니다.
Note: A kilobyte is 1024 bytes, not 1000 :)
킬로 바이트는 1024 바이트 입니다. 1000 바이트가 아닙니다.
※ 하드 용량의 차이에 관해서 여기서 약간 언급을 해야 겠습니다.
- 하드 용량을 보면 15G 를 짜리는 사면 제조회사마다 약간의 차이가
있을거에요. 그런 의문 가지신적 없는지?
바로 위와 같은 계산 방식 때문입니다. 1 Kbyte 를 1024로 하느냐..
1000 으로 하느냐.. 전산을 전공한 분이라면 1024가 맞지만 수치상으로
보자면 1000 도 맞는 표현이죠..
교묘한 상술의 효과죠 ^^* xxx 한 넘들...
하드는 대부분이 1000 을 기준으로 합니다.!!! 1024 기준이 아님!!
● Top Entry and Exit Pages
The Top Entry and Exit tables give a rough estimate of what URL's
are used to enter your site, and what the last pages viewed are.
Because of limitations in the HTTP protocol, log rotations, etc...
this number should be considered a good "rough guess" of the actual
numbers, however will give a good indication of the overall trend in
where users come into, and exit, your site.
아파치 특정폴더에 암호걸기 (htaccess / htpasswd 사용) (0) | 2015.01.16 |
---|---|
파일목록 숨기기 (0) | 2015.01.16 |
httpd.conf 파일에 대한 설명 (0) | 2015.01.16 |
아파치1.3 + 톰캣 연동하기 (0) | 2015.01.16 |
아파치2 + 톰캣5 연동하기 (0) | 2015.01.16 |
httpd.conf 파일은 크게 세부분으로 나누어져 있다.
Section 1: Global Environment : 아파치 전체적인 영향이 미치는 설정
Section 2: 'Main' server configuration : 주 서버에 대한 설정
Section 3: Virtual Hosts : 가상 호스트에 대한 설정
자, 그럼 이제부터 이 아파치웹서버의 모든 환경을 설정하는 아파치환경파일 httpd.conf파일의 설정방법에 대해서 상세히 알아보도록 하자.
### Section 1: Global Environment
전제환경설정 파트로 Section 1에서 설정하는 것들은 아파치 웹서버에
전반적인 영향을 미친다.
ServerType standalone
서버의 구동방법으로는 standalone과 inetd방식이 있는데, standalone
방식은 하나의 웹데몬(아파치서버)이 클라이언트의 접속을 모두 처리하는
방식으로 응답속도가 빠른 방법으로 주로 이방식을 사용한다. inetd 방식은
inetd라는 시스템의 /etc디렉토리 끝에 존재하는 inetd라는 슈퍼데몬이
클라이언트의 접속요구가 있을 때마다 웹서버를 구동하는 방식이다.
일반적으로 응답속도가 빠르고 효율적인 standalone으로 설정하여 사용한다.
ServerRoot "/usr/local/apache"
아파치서버의 홈디렉토리를 지정하며 절대경로로 지정한다. 이후로 나오는
대부분의 패스들은 이 경로에 대한 상대경로로 지정이 된다. 예를 들어
환경설정파일, 에러로그파일등의 상대경로의 기준이 되는 위치이다.
LockFile logs/accept.lock
아파치 컴파일시 USE_FCNTL_SERIALIZED_ACCEPT나
USE_FLOCK_SERIALIZED_ACCEPT으로 컴파일 했을 때 사용되는
LockFile의 경로지정시에 사용된다. 가급적 기본값으로 사용한다.
PidFile logs/httpd.pid
PidFile 설정은 ServerType을 Standalone으로 설정했을때만 유효한
것으로 아파치 서버의 프로세스가 생성되어 있을 때 그 프로세서ID(PID)를
기록하는 파일을 지정한다. 당연히 아파치서버가 재시작되거나 과부하로
인해 PID가 바뀌게 될 경우에는 이 파일의 PID값도 바뀌게 된다. 즉
다시말해서 여기서 지정된 파일(httpd.pid)에 실행되고 있는 아파치서버의
프로세스번호(PID)값이 기록된다고 하면 정답이다. ServerRoot를 기준으로한
상대경로로 지정된다. 절대경로로 지정하려면 "/"로 시작하는 절대경로를
적어주면 된다.
ResourceConfig conf/srm.conf
AccessConfig conf/access.conf
아파치 서버의 환경설정파일은 3개이au httpd.conf, srm.conf, access.conf
가 그것이다. 그러나 하나의 설정파일로 하는 것이 효율적이기 때문에
지금은 httpd.conf파일안에 3개의 파트(Section)로 나누어서 하나의
파일안에서 설정을 하고 있다. srm.conf와 access.conf파일의 내용은 현재
비어있는 상태이지만, 필요하다면 이 파일 내에도 설정을 할 수 있다.
아파치 서버가 실행이 될 때는 httpd.conf, srm.conf, access.conf 순으로
언제나 이 3개의 파일을 모두 읽고 난뒤에 실행이 되기 때문이다. 만약 이
두 개의 파일을 서버가 무시하도록 하려면 다음과 같이 하거나 "#"으로 붙여
두면 주석처리되어 무시된다.
ResourceConfig /dev/null
AccessConfig /dev/null
Timeout 300
클라이언트의 요청에 의해 서버와 연결이 되었을 때 클라이언트와
서버간에 아무런 메시지가 발생하지 않았을 때 오류로 처리될 시간을
초단위로 설정한다. 초기값은 1200이며 보통은 300초로 지정을 한다.
네트웍의 속도가 나쁠수록 수치값은 높게 설정하는 것이 좋다.
KeepAlive On
접속한 채로 특별한 요청없이 지속적인 연결을 허용할 것인지를 설정한다.
허용하지 않으려면 off
MaxKeepAliveRequests 100
클라이언트가 접속된 시간동안 아파치서버에 요청할 수 있는 최대의
개수를 지정한다. 0을 지정하면 제한없음을 의미하며, 서버의 성능향상을
위하여 가능한 높은 값이 좋다.
KeepAliveTimeout 15
아파치 서버는 같은 접속상태의 클라이언트에서 여기서 지정한 초만큼의
요청이 없었을 때 접속을 끊게 된다.
MinSpareServers 5
MaxSpareServers 10
아파치 웹서버는 성능향상과 빠른 응답속도를 위해 유휴서버(현재
서비스대기 중인 프로세스)를 만들게 되는데 이 유휴서버의 개수는 시스템의
상황에 따라 달라지게 된다. 유휴서버가 MinSpareServers의 개수(5) 보다
적게되면 추가로 생성을 하게 되며 MaxSpareServers의 개수(10)보다 많게
되면 죽이게 된다. 즉, 유휴서버의 개수를 적절히 조절하기 위한 것이라
생각하면 된다.
StartServers 5
아파치 웹데몬이 구동될 때 자식프로세스를 몇 개로 할 것인가를
지정한다. 시작할 때 동시에 띄우게 될 웹데몬의 개수이다. 그러나 웹데몬이
구동되고 난 뒤엔 시스템의 상황(부하율등)에 따라 대부분 합리적인
개수만큼 동적으로 생성되었다가 죽기도 하므로 큰 의미를 가지는 것은
아니다.
MaxClients 150
아파치웹서버에 접근할 수 있는 클라이언트의 최대갯수는 이 상한값으로
제한한다. 여기서 지정한 개수이상의 클라이언트의 요청이 생긴다면
아파치는 응답하지 않고 이 요청을 무시한다. 이를 제한하는 이유는
시스템의 자원을 아파치 웹서버가 무한정 차지하는 것을 방지하기 위한
것이다.
MaxRequestsPerChild 30
아파치 웹서버의 자식프로세스들이 클라이언트의 요청 개수를 지정한다.
만약 자식프로세스가 이 값만큼의 클라이언트요청을 받았다면 이
자식프로세스는 자동으로 죽게된다. 이 값이 0으로 설정이 된다면
자식프로세스가 자동으로 죽는일은 없을 것이다. 그러나 0아닌 다른 값으로
설정함으로서 프로세스의 수를 적절히 조절하여 시스템의 부하조절과
자원낭비를 어느정도 방지 할 수 있다.
Listen 3000
Listen 12.34.56.78:80
시스템의 기본값이외에 다른 IP Address와 포트에 대해서도 연결할 수
있도록 해 준다. 환경설정파일(httpd.conf) 맨뒤에 나오는 가상호스트(Virtual
Host)부분에서 설정되는 가상호스트를 설정하기 위해 필요하다.
BindAddress *
서버가 응답할 수 있는 IP Address를 설정하는 것이다. 하나의 시스템에
있는 아파치웹서버 하나로 여러 웹서버처럼 관리하는 웹호스팅서비스등에서
많이 이용하는 것으로 여러 IP Address를 인식할 수 있게 한다. "*"으로
설정이 되었다면 모든 IP Address에 대해 응답할 수 있으며, IP Address를
지정한다면 지정한 IP Address에 대해서만 응답할 수 있게 된다. 여러개의
IP Address를 ISP로부터 할당받아서 웹호스팅서비스를 하고자 한다면
이부분에서 지정해 주면된다. 이 설정파일의 맨 뒷부분에 나오는
웹서버가 응답할 수 있도록 하려면 여기서 IP Address를 지정해 줘야 한다.
ExtendedStatus On
server-status로 아파치웹서버의 상태를 상태를 모니터링 할 때
"자세한상태정보"기능을 제공할 것인지(On) 아닌지(Off)를 설정하는 것이다.
### Section 2: 'Main' server configuration
Section 2에서 설정하는 항목들은 아파치의 주된서버가 사용할 값들을
지정한다.
여기서 지정된 값이 기본값으로 적용된다. 또한 여기서 지정하는 값을 각
지정한 값이 우선적용된다.
Port 80
아파치웹서버의 기본포트를 지정한다. 특별하게 사용하는 것이 아니라면
80번으로 해둬야 한다. 사용가능한 포트는 0 ~ 65535이며 1024이하의
포트번호는 시스템에서 특별하게 예약되어 있으므로 80번 이외의 다른
포트를 사용하려면 1024이상의 포트번호를 지정해서 사용해야 할 것이다.
특별한 지정이 없다면
기본포트가 된다. 만약
포트번호가 우선한다.
(특별히 PORT를 따로 지정해 줄 필요가 있을 때는 따로 지정해 주며,
이때는 웹서버로 접근할 때 반드시 따로지정한 PORT번호로 접근해야 한다.
예를들어 Port 1234로 지정했다면, 접근시 : http://www.domain.co.kr:1234
로 접속해야한다. 단, 80번은 default이므로 Port번호를 입력하지 않아도
도메인만으로 그냥 접근할 수 있다. 예: http://www.domain.co.kr )
User nobody
Group nobody
아파치 웹데몬이 요청을 받았을 때 여기서 지정한 user와 group으로
응답을 하게된다. 이 설정은 ServerType이 Standalone방식이며, 아파치의
실행이 root권한으로 실행이 되었을 때 유효한 것이다. 많은
웹서버관리자들이 nobody로 설정을 해 두고 있으며, 만약 시스템에 nobody
user가 없다면 새로생성(useradd)을 해야 할 것이다. 단, root로 설정하는
것은 절대로 있어서는 안되며 nobody이외의 다른 시스템사용자 id로 지정을
한다면 정말 신중히 모든면(시스템 보안 및 자원사용등)에서 깊게 고려를
해봐야 한다.
ServerAdmin webmaster@www.domain.co.kr
여기서 지정하는 email address는 웹문서 로딩에러등의 문제에서
클라이언트측으로 보내질 메일주소값이다. 대부분
웹서버관리자의 email address로 설정을 한다.
ServerName new.host.name
클라이언트에게 보여주는 호스트이름을 지정한다. www를 쓰지않는
호스트에서 www를 쓰는 것처럼 보이게 할 수 있다. 예를 들어
bbs.manualand.co.kr을 www.manualand.co.kr로 지정해서 쓸 수 있다.
이곳에 IP Address를 적게 되면 클라이언트에는 Ip Address를 보여준다.
DocumentRoot "/usr/local/apache/htdocs"
아파치 웹서버의 웹문서가 있는 경로를 지정한다. 예를 들어
"http://www.manualand.co.kr/index.html"의 초기 문서라면 이 초기문서의
절대 경로는 여기서 지정된 "/usr/local/apache/htdocs/index.html"이 된다.
경로의 맨 마지막에 "/"를 추가해서는 안된다. Alias를 사용하여 다른 위치를
지정할 수도 있다.
Options FollowSymLinks
AllowOverride None
에서 지정되는 값에 대한 옵션은 다음과 같은 의미를 가지고
있다.
None : 일단 모든허용을 하지 않는다.
All : 모든허용을 한다.
Indexes :
Includes :
FollowSymlinks :
ExeCGI :
MultiViews :
UserDir public_html
하나의 아파치 웹서버에서 여러 사용자의 홈페이지를 별도로 만들어
관리할 때 필요한 개별 가입자의 홈페이지 디렉토리이름이다. 예를 들어
sspark이란 계정가입자의홈페이지는 "http://manualand.co.kr/~sspark"라는
홈페이지를 가지고 있을 때 sspark의 계정에서 "public_html"이란
디렉토리가 홈디렉토리가 되어 이 디렉토리에 있는 초기문서 index.html을
불러서 보여주게 된다.
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch
IncludesNoExec
Order allow,deny
Allow from all
Order deny,allow
Deny from all
계정사용자의 홈페이지(public_html)의 접근에 대한 옵션을 지정한 것이다.
DirectoryIndex index.html
디렉토리만을 지정했을 경우에 그 디렉토리에서 찾게될 문서의 순서를
지정해 준다. 즉, 디렉토리 이름만을 지정하더라도 여기서 지정한
index.html을 찾아서 웹브라우즈에 보여준다. 여러개의 파일을 지정할 수
있으며, 이런 경우에는 순서대로 찾아서 보여준다. 예를 들어
"DirectoryIndex index.html index.htm"로 지정했다면 먼저 "index.html"을
찾아서 있다면 이 파일을 로딩하고, "index.html"이 없다면 "index.htm"을
찾아서 로딩해 준다.
AccessFileName .htaccess
디렉토리별로 접근제어할 정보(ID, Password)를 담고 있는 파일을
지정한다. 디렉토리별로 인증을 거쳐서 접근할 수 있는 설정을 하기위한
것이다. 예를 든다면 어떤 홈페이지의 전부나 혹은 일부에로 접근하려고 할
때 ID, Password를 묻는 창이 뜨면서 맞게 입력한 경우에만 접근허용하는
것이다. 보안상의 이유로 이 파일의 이름을 다른 이름으로 바꾸로 싶다면
".htaccess"대신에 다름이름을 적어주면 된다.
Order allow,deny
Deny from all
바로위에서 설정한 파일(".htaccess")의 내용을 볼 수 없게 할 때 사용하는
옵션이다. 보안상의 이유로 이 옵션은 설정해 두는 것이 좋다. 만약 이
옵션을 주석처리해 둔다면 ".htaccess"파일에 대한 보안은 누구도 장담할 수
없을 것이다.
UseCanonicalName On
TypesConfig conf/mime.types
웹서버의 mime type을 지정한 파일을 지정한다. mime.types파일은 서버에
의해 리턴될 수 있는 파일명과 mime형식을 기술해 놓은 파일이다.
DefaultType text/plain
mime.types 파일에 정의 되어있지 않은 파일형식에 대한 요청을 받았을 때
알 수 없는 문서타입에 대하여 사용할 기본적인 mime 타입을 정해둔다.
HostnameLookups Off
웹서버의 로그(access_log)를 지정하는 Format에서 "DNS Lookup"으로
지정하였을 때, domain으로 남길 것인가, IP Address로 남길 것인가를
지정한다. Default로 Off는 IP Address로 남기는 것이며, Domain으로 변경할
필요가 없으므로 on으로 설정한 것보다는 속도가 조금빠르다.on으로 하게
되면 IP address를 IP Domain으로 변환해야 하므로 속도가 조금 느릴 수
있다.
ErrorLog logs/error_log
아파치 웹서버의 에러로그 기록파일을 지정한다. 참고할 사항은 맨
마지막에 설정하는
지정해 두지 않으면 그에 대한 에러로그도 여기에 기록되며, 지정해 두게
되면 그에 해당하는 로그는 이 파일에 기록되지 않는다.
LogLevel warn
바로위에서 설정한 에러로그 파일에 얼마나 자세하게 적을 것인지를
결정한다. 다음에 해당하는 순서대로 중요도가 정해진다. " debug → info →
notice → warn → error → crit → alert → emerg "
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i"
"%{User-Agent}i"" combind
LogFormat "%h %l %u %t "%r" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
바로 아래에서 사용할 CustomLog에서 사용할 몇가지 로그형식의 별명을
정한 곳이다.
웹서버의 관리자나 서버관리자는 이 부분을 특히 유심히 봐둬야 한다.
웹서버의 로그를 어떤 식으로 남길 것인가를 결정하는 Format을 지정하는
곳이다. 원하는 정보를 지정해서 볼 수 있으므로, 관리자에게 필요한
Format으로 설정해야 하며, 또한 접속통계를 내기에 적당한 Format으로
설정해 둬야 한다.
CustomLog logs/access_log common
위에서 정한 로그형식(여기선 common)대로 로그를 남기게 된다.
맨마지막에서 지정하는
CustomLog를 가상호스트별로 지정할수 있도록 CustomLog를 제공한다.
로그를 남기게 되며
경우에는 여기서 지정한 로그형식은 무시된다.
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
#CustomLog logs/access_log combined
위에서 지정한 4가지의 로그형식(combind, common, referer, agent)중에서
원하는 부분의 #(주석행)을 제거하면 지정된다.
ServerSignature On
서버가 생성하는 문서(error documents, FTP directory listings,
mod_status and mod_info output etc., but not CGI generated documents)의
trailing footer line의 설정을 가능하게 한다.
Alias /icons/ "/usr/local/apache/icons/"
필요한 만큼의 디렉토리 별칭을 만들어 쓸 수 있다. 사용하는 형식은
다음과 같다.
Alias fakename(가상이름) realname(진짜이름)
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
ScriptAlias는 서버스크립트를 포함한다. ScriptAlias는 실제디렉토리 안에
들어있는 문서를 서버에 의해 응용프로그램으로 취급되어 실행되는 것을
제외하고는 근본적으로 Aliases와 같다.
IndexOptions FancyIndexing
IndexOPtions는 디렉토리목록을 표시할 때 사용할 옵션을 지정한다.
Standard는 표준적인 디렉토리를 나타내며, FancyIndexing은 좀더 예쁜
디렉토리목록을 표시해 준다.
아래에서 지정하는 AddIcon으로 시작하는 설정은 바로위에서 설정한
디렉토리인덱싱 옵션을 FancyIndexing으로 한 경우에 해당하며 디렉토리
목록을 표시할 때 각 파일 확장자에 따라서 어떤 아이콘을 선택하여 보여줄
것인지를 지정한다.
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^^
DefaultIcon /icons/unknown.gif
여기서 지정한 확장가가 아닌 경우에 여기서 지정한 기본아이콘으로
보여준다.
AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive" .tgz
AddDescription은 서버가 생성한 인덱스의 파일 뒤에 간단한 설명을
표시할 때 사용한다. 이 설정은 IndexOptions가 FancyIndexing으로
설정되었을때만 표시되며, 설정형식은 다음과 같다.
형식 : AddDescription "표시할 설명" 파일확장자
ReadmeName README
ReadmeName은 디렉토리목록표시 뒤에 붙여서 보여줄 README파일의
이름을 지정한다.(일종의 꼬릿말)
HeaderName HEADER
HeaderName은 디렉토리목록표시 앞에 붙여질 파일의 이름을 지정한다.
(일종의 머릿말)
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
디렉토리목록을 인덱싱할 때 제외할 파일명을 지정한다. 즉 디렉토리
목록에 포함하지 않을 파일을 지정한다. 쉘스타일의 와일드카드(*, ?)가
허용된다.
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
AddEncoding은 특정브라우즈(Mosaic/X 2.1+)에서 받고있는 중에 정보에
대한 압축해제를 할 수 있도록한다. 단 모든 웹브라우즈에서 이 기능을
제공하는 것은 아니다.
AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it
AddLanguage는 문서의 언어를 지정하게 한다.
LanguagePriority en fr de
언어의 우선순위를 내림차순으로 지정한다.
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
AddType application/x-tar .tgz
AddType은 mime.types의 실제 편집없이도 mime을 설정할 수 있다.
AddHandler cgi-script .cgi
AddHandler는 파일확장자를 처리기(Handler)에 매핑(연결)시켜주게 된다.
AddType text/html .shtml
AddHandler server-parsed .shtml
SSI(Server Side Include)문서를 인식하게 하기위한 설정이다. SSI코드가
들어가 있는 문서는 확장자가 *.shtml이다. 시스템의 날짜와 카운터등
CGI프로그램을 하지 않아도 HTML문서에서 단 몇줄로 CGI의 효과를 낼 수
있는 SSI기능을 인식하게끔 하는 설정이다. "7장. 아파치와 SSI"편에서 자세히
설명되어 있다.
#Format: Action media/type /cgi-script/location
#Format: Action handler-name /cgi-script/location
Action은 매칭되는 파일이 호출될때마다 스크립트를 실행시킬 수 있도록
미디어 타입을 정의한다.
MetaDir .web
MetaDir은 아파치가 찾을 메타정보파일들의 디렉토리이름을 지정한다. 이
파일들은 문서를 전송할 때 포함되는 HTTP 헤더정보가 포함되어 있다.
MetaSuffix .meta
MetaSuffix는 메타정보를 포함하고 있는 접미어의 이름을 지정한다.
에러발생시 응답을 정의할 수 있는 방법을 3가지 나타내고 있다.
1) 일반적인 텍스트
ErrorDocument 500 "The server made a boo boo.
2) 지역적인 방향전환
ErrorDocument 404 /missing.html
ErrorDocument 404 /cgi-bin/missing_handler.pl
3) 외부 방향전환
ErrorDocument 402
http://some.other_server.com/subscription_info.html
다음의 BrowserMatch는 keepalives기능을 쓰지못하게 하며 HTTP
헤드방식을 설정한다.
BrowserMatch "Mozilla/2" nokeepalive
이 설정은 Netscape 2.x 또는 이를 따르는 브라우즈에 대하여 KeepAlive
기능을 쓰지 못하게한다.
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0
force-response-1.0
이 설정은 잘못구현된 HTTP/1.1과 301또는 302반응에 대하여
KeepAlive를 적절히 제공하지 못하는 마이크로소프트 인터넷익스플로러
4.0b2d에 관한 것이다.
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/1.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0
위의 3가지 설정은 기본적인 1.1반응도 처리하지 못하며 HTTP/1.0 스팩을
제한하고 있는 브라우즈에 대하여 HTTP/1.1반응을 하지 못하게 한 것이다.
SetHandler server-status
Order deny,allow
Deny from all
Allow from www.manualand.co.kr
서버의 상태를 점검할 수 있게하는 설정이다. 이는
"http://www.manualand.co.kr/server-status"와 같은 형식으로 서버의 상태를
점검할 수 있다. "6장. 아파치서버 모니터링"편에서 자세히 설명되어 있다.
여기서 지정한 "SetHandler server-status"의 설정으로 인해 서버
모니터링을 할 수 있는 것이다.
SetHandler server-info
Order deny,allow
Deny from all
Allow from www.manualand.co.kr
이설정을 위해서는 mod_info.c가 적재되어야 하며, 이는
"http://www.manualand.co.kr/server-info"와 같은 방식으로 서버의 정보를
볼 수 있다. 위에서 설정한 server-status와 함께 실행중인 웹서버의
상태점검을 위한 것이다.
Deny from all
ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
아파치 1.1이전 버전의 오래된 버그에 대한 악용이 있을시에는 지정한곳
(http://phf.apache.org/phf_abuse_log.cgi) 으로 방향을 전환시킨다.
ProxyRequests On
아파치 웹서버를 Proxy서버로 사용할 때 on을 해줘야 한다. 즉
프락시서버 지시자로서 프락시서버를 on 시킨다.
Order deny,allow
Deny from all
Allow from .your_domain.com
ProxyVia On
HTTP/1.1 "Via:"헤드처리를 활성화시킬 것인지 비활성화 시킬것인지를
지정한다. Off, On, Full, Block중 하나가 올 수 있으며 Full은 서버버전을
포함하며, Block은 나가는 모든 것에 대해 Via:헤더를 제거한다.
CacheRoot "/usr/local/apache/proxy"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
NoCache a_domain.com another_domain.edu joes.garage_sale.com
이 설정은 캐시기능을 활성화 하기 위한 것이다.
### Section 3: 가상호스트 설정
여러분의 시스템에서 여러개의 도메인이나 호스트네임을 설정하여
관리하고자 한다면
대한 정보는 http://www.apache.org/docs/vhosts/를 참조해 보면 좀더
자세한 정보를 얻을 수 있다. '-S'옵션을 사용함으로써 가상호스트의 설정에
대한 점검을 할 수 있다. name-based 가상호스트를 사용하길 원한다면
적어도 한 개이상의 IP Address를 정의할 필요가 있다. "4-2절의 내용"과
"10장.웹호스팅 서비스를 위한 가상호스트"편에서 자세히 설명되어 있다.
NameVirtualHost 12.34.56.78:80
NameVirtualHost 12.34.56.78
ServerAdmin webmaster@manualand.co.kr
DocumentRoot /home/sspark/public_html
ServerName www.manualand.co.kr
ErrorLog /home/sspark/public_html/aw/error_log
CustomLog /home/sspark/public_html/aw/access_log common
ServerAdmin은 해당서버의 관리자 전자우편이며,
DocumemtRoot는 해당서버의 홈디렉토리이며,
ServerName은 해당서버의 도메인이며,
ErrorLog는 해당서버의 에러파일 위치이며
CustomLog는 로그파일위치와 포맷을 지정한 것이다.
Default 가상호스트 설정으로 위에서 설정되지 않은 다른 모든 호스트에
대해서 응답을 하고자 할 경우설정해 준다.
파일목록 숨기기 (0) | 2015.01.16 |
---|---|
아파치의 httpd 로그파일 상세 분석 (0) | 2015.01.16 |
아파치1.3 + 톰캣 연동하기 (0) | 2015.01.16 |
아파치2 + 톰캣5 연동하기 (0) | 2015.01.16 |
보안서버(ssl) 실행 방법 (0) | 2015.01.16 |
1) <head> 와 </head> 사이에 이 소스 넣으시구요...
--------------------------------------------------------------------
<script language="JavaScript">
<!--
function random(n) {
return (Math.floor(Math.random()*100000)%6);
}
// -->
</script>
---------------------------------------------------------------------
2) <body> 부분에서 이미지 넣을 부분에 <img src> 테크 대신에 이걸 넣으세요.....
---------------------------------------------------------------------
<script language="JavaScript">
document.write( '<img src="이미지 경로/파일이름_0'+random(랜덤할이미지갯수)+'.확장자" width="이미지가로크기" height="이미지세로크기" border="0">');
</script>
---------------------------------------------------------------------
위의 소스에서 빨간 부분만 고쳐서 사용하세요...
예를 들어....
images 폴더 아래의 main_image0.jpg 부터 main_image6.jpg 까지 6개의 파일을
랜덤으로 돌리실꺼라면...
images/main_image0'+random(6)+'.jpg
이렇게 고시치면 되겠죠....
[출처] ??
아이프레임 높이 자동조절 (0) | 2015.01.27 |
---|---|
글 복사시 출처 자동으로 넣어주기 (0) | 2015.01.27 |
[html] 웹페이지 자동 이동 소스 (0) | 2015.01.27 |
[JavaScript] 링크 클릭시 특정 주소 클립보드로 복사 (0) | 2015.01.16 |
[html] 도메인 포워딩 소스 (0) | 2015.01.16 |